我是JSON的新手。
我希望我的网页能够在表格中显示几百条记录的小型数据库。为了避免将我的数据放入MySQL数据库或类似的东西的麻烦,我想我会从JSON文件中读取我的数据,并将其写入JSON文件,这相当于我的方便,持久的存储数据库在我的网站上。
所以我花了一些时间编写一个脚本,将我现有的论文文件翻译成一个包含我所有记录的papers.json文件。它看起来像:
[
{"title" : "IEEE Standard for Local and Metropolitan Area Networks: Overview and Architecture",
"authors" : "IEEE",
"pub" : "IEEE 802-2001 standard",
"datepub" : "2001",
"keywords" : "MAC",
"dateread" : "200309",
"physloc" : "box i",
"comment" : "Indicates how you can manage addresses assigned to you by IEEE."
},
{"title" : "A framework for delivering multicast messages in networks with mobile hosts",
"authors" : "A. Acharya, B. R. Badrinath",
"pub" : "Mobile Networks and Applications v1 pp 199-219",
"datepub" : "1996",
"keywords" : "multicast mobile MH MSS",
"dateread" : "",
"physloc" : "box a",
"comment" : ""
},
<hundreds more similar papers records here...>
},
{"title" : "PiOS: detecting privacy leaks in iOS applications",
"authors" : "M. Egele, C. Kruegel, E. Kirda, G. Vigna",
"pub" : "NDSS 2011",
"datepub" : "2011",
"keywords" : "iOS app location leakage",
"dateread" : "",
"physloc" : "box e",
"comment" : "discussed at Latte"
}
]
这是我用来阅读它的javascript代码。 (我还没有编写记录的写出,因为读取不起作用。)
var pdb = []; // global
var doneReading = false; //global
$(document).ready(function() {
$.getJSON('papers.json',function(data) {
pdb = data;
doneReading = true;
});
while (!doneReading) {}
alert("finished assignment of JSON to pdb"+" "+typeof pdb);
//alert(pdb[0].title);
console.log(pdb[2]);
//setup();
});
脚本永远挂在while循环中。为什么?
我也是jQuery的新手。如果不使用图书馆,我会觉得这样做更舒服,一次一件新事物对我来说足够了。可以在没有jQuery的情况下轻松操作JSON文件吗?
答案 0 :(得分:3)
普通浏览器JavaScript是单线程的。准确地因为无限while
永远不会结束,JavaScript引擎永远不会处理$.getJSON
调用的成功回调。您的浏览器唯一的JS线程将永远循环,并且永远不会转移到回调。
解决方案:您应该消除循环并将当前在无限循环之后的代码移动到$.getJSON
回调中。