2011-04-12 77 views
2

我正在使用JavaScript解析JSON文件。但我无法理解我得到的错误。有没有人可以帮助我解决这个问题。无法解析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] } 

警报在上面的代码中并没有显示在网页上的任何东西。

回答

2

Ajax是异步的。您正试图在从服务器到达之前读取响应。哦,比这更糟糕。您正在打开请求,但从未实际发送请求。

您需要使用事件处理程序onreadystate更改以在响应到达后运行代码,并且您需要将请求发送到服务器,然后才能获得响应。有一个decent guide to using XHR here

3

您的用于发出Ajax请求的代码不正确。

首先,var request = new XMLHttpRequest();不适用于IE 5,6;例如,你需要做的XMLHTTP的跨浏览器对象

其次,request.open("GET","test.json");并不表示该请求是异步...即你缺少第三布尔参数(真/假)

第三,你是

request.send(null); 

尝试以下链接的Ajax:使用未将请求发送到Web服务器

http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp

使用Javascript试试这个链接解析JSON:

http://json.org/js.html

希望这有助于。

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/