2017-03-01 133 views
1

我想通過使用XMLHttpRequest獲取JSON文件中的數據。我已經檢查過我收到了這個文件。從XMLHttpRequest解析JSON文件

var xhttp = new XMLHttpRequest(); 
xhttp.onreadystatechange = function() { 
    if (this.readyState == 4 && this.status == 200) { 
     document.getElementById("demo").innerHTML = this.responseText; 
    } 
}; 
var obj = xhttp.open("GET", "../data/data.json", true); 
xhttp.send(); 
var obj1 = JSON.parse(obj); 
a0 = obj1.a0; 

這是我的JSON文件。

{"a0":2, "a1": -2.356, "a2": 4.712} 

我找不到我在這裏做的錯誤。你能幫我嗎?

+0

有之間的innerHTML'= this.responseText一個相當明顯的區別;'和'OBJ = xhttp.open( 「GET」, 「../data/data.json」,真) ;' – Quentin

回答

1
var xhttp = new XMLHttpRequest(); 
xhttp.onreadystatechange = function() { 
    if (this.readyState == 4 && this.status == 200) { 
     document.getElementById("demo").innerHTML = this.responseText; 
     var obj=this.responseText; 
     var obj1 = JSON.parse(obj); 
     a0 = obj1.a0; 
    } 
}; 
xhttp.open("GET", "../data/data.json", true); 
xhttp.send(); 

您需要獲取xhttp響應中的響應文本。

0

onreadystatechange是一個回調函數。這意味着當請求結束時它被異步調用。所以你的代碼的一部分是錯位的。這裏的校正:

var xhttp = new XMLHttpRequest(); 
xhttp.onreadystatechange = function() { 
    if (this.readyState == 4 && this.status == 200) { 
     document.getElementById("demo").innerHTML = this.responseText; 
     var obj1 = JSON.parse(this.responseText); 
     var a0 = obj1.a0; 
    } 
}; 
xhttp.open("GET", "../data/data.json", true); 
xhttp.send();