javascript - 如何在html中使用session存储?

标签 javascript html sharepoint

你好,我有 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/

相关文章:

javascript - 在提交时使用 jquery 在另一个 div(显示)中显示表单值

javascript - 如何动态导入全局类构造函数?

javascript - 为具有相同类的每个元素运行一个函数

CSS 嵌套跨度和宽度属性

javascript - 如何让网页中的鼠标滚轮垂直和水平滚动?

SharePoint 和 Log4Net

javascript - 如何从 blob url 读取数据?

html - 如何覆盖 Bootstrap 复选框样式

sharepoint - 使用元数据搜索 SharePoint 结果

c# - ASP.NET Core Web 应用程序 - 如何上传大文件