2011-04-12 78 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/