将会话存储(JSON)中的动态数据附加到Listview

时间:2013-11-26 17:52:17

标签: javascript jquery json listview

我在会话中存储了以下数据(JSON):

Prescription: [{"medID":"id1","medName":"name1","medQty":"qty1","medDirec":"Directions1"}, {"medID":"id2","medName":"name2","medQty":"qty2","medDirec":"Directions2"}]

我想在页面Listview的{​​{1}}(jQuery Mobile)中自动“显示”这些信息,为此我提出了以下建议:

load

当我取消注释$(document).ready(function () { window.addEventListener('load', OnStorage, false); }); function OnStorage(event) { if (window.sessionStorage) { var retrievedData = sessionStorage.getItem("Prescription"); var PrescriptionJSON = JSON.parse(retrievedData); var prescLength = PrescriptionJSON.Length(); for (var i = 0; i < PrescriptionJSON.Length(); i++) { var text = '<h2>' + PrescriptionJSON[i].medName + '</h2>' + '<p><strong>Quantity: </strong>' + PrescriptionJSON[i].medQty + '</p>' + '<p><strong>Directions: </strong>' + PrescriptionJSON[i].medDirec + '</p>' $('<li />', { html: text }).appendTo("#summaryList ul"); //$("#summaryList").append(text); //alert(retrievedData); } $('#summaryList').listview("refresh"); $('#summaryList').trigger("create"); } } 时,我在警告弹出窗口中获取JSON,但是当我调用//alert(retrievedData);//alert(PrescriptionJSON);变量)时,我得到类似[object,Object]的内容。尽管如此,我不知道这是否值得一提,但以防万一。

基本上我不知道上面的脚本有什么问题,因为我没有从附加到parsed的JSON数据中得到任何结果。 仅供参考,我在HTML方面有这个。

listview

请注意,数据的长度(<ul id="summaryList" data-role="listview" data-inset="true"> <li data-role="list-divider" style="text-align:center">Prescription Summary</li> </ul> )将动态创建,因此长度可能并不总是2,如上例所示。

我在网上进行了2小时的研究,发现了类似的问题,但没有人可以帮我解决问题。我还看了http://www.copterlabs.com/blog/json-what-it-is-how-it-works-how-to-use-it/并学到了更多的东西,但仍然无法解决我的问题。

非常欢迎任何建议或问题!

1 个答案:

答案 0 :(得分:1)

var PrescriptionJSON =  '[{"medID":"id1","medName":"name1","medQty":"qty1","medDirec":"Directions1"}, {"medID":"id2","medName":"name2","medQty":"qty2","medDirec":"Directions2"}]';
     localStorage.setItem("PrescriptionJSON", PrescriptionJSON);

     function OnStorage(event) {
        if (window.localStorage) {
            var retrievedData = localStorage.getItem("PrescriptionJSON");
            var obj = $.parseJSON(retrievedData);
            var li = "";
            $.each(obj, function(key, value) {
                li  += '<li><h2>' + value.medName + '</h2><p><strong>Quantity: </strong>' + value.medQty + '</p><p><strong>Directions: </strong>' + value.medDirec + '</p></li>'       
            })

            $('#summaryList').append(li).trigger("create");
            $('#summaryList').listview("refresh");
        }
    }