我使用JavaScript来解析JSON文件。但我无法理解我得到的错误。请有人帮我解决这个话题。
**我的代码: Html文件:
<title>JSON Parser</title>
<script type="text/javascript">
function webGLStart() {
var request = new XMLHttpRequest();
request.open("GET","test.json");
var my_JSON_object = JSON.parse(request.responseText);
alert (my_JSON_object.result[0]);
}
</script>
</head>
<body onload="webGLStart();">
</body>
</html>
test.json文件:
{"result": [0,1,2,3,4] }
上述代码中的警告不会在网页上显示任何内容。
答案 0 :(得分:6)
直接使用jQuery:
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$.getJSON('test.json', function(data) {
$.each(data, function(key, val) {
console.log("key=" + key + " " + "val=" + val);
});
});
有关更多示例代码,请查看此处:http://api.jquery.com/jQuery.getJSON/
答案 1 :(得分:3)
您发出Ajax请求的代码不正确。
首先,var request = new XMLHttpRequest();
不适用于IE 5,6;即你需要制作XMLHttp的跨浏览器对象
其次,request.open("GET","test.json");
并不表示此请求是异步的...即您缺少第三个布尔参数(true / false)
第三,您不是使用以下方式将请求发送到Web服务器:
request.send(null);
尝试以下Ajax链接:
http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp
尝试此链接以使用Javascript解析JSON:
希望这有帮助。
答案 2 :(得分:2)
Ajax是异步的。您试图在响应从服务器到达之前读取响应。哦,比这更糟糕。您正在打开请求但从未实际发送过。
您需要使用事件处理程序onreadystate change来在响应到达后运行代码,并且需要先将请求发送到服务器,然后才能获得响应。有decent guide to using XHR here。