你好,我有 2 个 html 页面。在第一页上,我借助 caml 查询从 sharepoint 2013 获取数据。我将值存储在集合中。
这是我的 JavaScript:
<script type="text/javascript">
$(document).ready(function () {
var scriptbase = "examplebase"
$.getScript(scriptbase + "SP.Runtime.js", function () {
$.getScript(scriptbase + "SP.js", doNext);
});
});
var siteUrl = "example.example";
function doNext() {
console.log("SharePoint geladen!!");
retrieveListItems(siteUrl);
}
function retrieveListItems(siteUrl) {
var clientContext = new SP.ClientContext(siteUrl);
var oList = clientContext.get_web().get_lists().getByTitle('Component Documents');
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml('<View><ViewFields><FieldRef Name="ComponentID" /><FieldRef Name="FileRef" /><FieldRef Name="ComponentType" /><FieldRef Name="FileLeafRef" /></ViewFields><Query><Where><Eq><FieldRef Name="ComponentCategory" /><Value Type="Text">Datenblatt</Value></Eq></Where></Query></View>');
this.collListItem = oList.getItems(camlQuery);
clientContext.load(collListItem);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded(sender, args) {
var listItemInfo = '';
var listItemEnumerator = this.collListItem.getEnumerator();
while (listItemEnumerator.moveNext()) {
var oListItem = listItemEnumerator.get_current();
console.log(oListItem);
}
sessionStorage.setItem('test', listItemEnumerator );
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace())
}
</script>
上面的代码适用于第 1 页。listItemEnumerator 集合中有 32 个对象。抱歉,但我是新人,所以我现在不知道怎么说,但来自调试器:[object Object]{$0_0: Object {...}, $2P_0: false, $5_0: Object {...} , $R_0: 对象 {...}}
希望这有帮助....
在第 2 页上,我想用新表单填充数据:
<form id="myForm">
<select id="selectNumber">
<option>Choose a number</option>
</select>
使用这个 JavaScript:
<script type="text/javascript">
var myObject = sessionStorage.getItem('test');
for(var i = 0; i < myObject.length; i++) {
var opt = myObject[i];
var el = document.createElement("option");
el.textContent = opt;
el.value = opt;
select.appendChild(el);
}
</script>
但无论如何, session 内容总是未定义,我不知道为什么。有人能解释一下为什么这不起作用吗?
任何帮助都会很棒,感谢您抽出时间。
顺便说一句,对不起我的英语
最佳答案
setItem 方法接受键和值,两者都必须是字符串。在您的示例中,您始终使用“test”键,但我怀疑这是为了允许您进行调试。
根据 this S.O post ,您需要使用 JSON 之类的东西将对象序列化为字符串。
关于javascript - 如何在html中使用session存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36496858/