2017-02-03 79 views
0

我使用這段代碼來獲取存儲在同一個文件夾中的JSON文件。用JavaScript解析一個JSON對象,就不會起作用

var schedtotal = 0; 
var requestURL11 = 'schedtotal.json'; 
var request11 = new XMLHttpRequest(); 
request11.open('GET', requestURL11); 
request11.responseType = 'json'; 
request11.send(); 
request11.onload = function() { 
window.superHeroes11 = request11.response; 
populateHeader11(superHeroes11); 
} 


function populateHeader11(jsonObj) { 
window.schedtotal = jsonObj.total; 
console.log("populateHeader function has activated"); 
console.log(jsonObj); 
} 

文件看起來是這樣的:

{"total": 3} 

它是有效的JSON。我試圖使用與其他文件中的其他JSON解析成功使用的相同的確切方法(我沒有在這裏列出)提取總數的值。

當調用populateHeader11時,它不會將schedtotal更改爲等於總數。它保持原來的設置0.控制檯日誌從該函數返回,因爲它已經被激活,並且還返回JSON文件,所以我知道它至少可以訪問它。

我試過改變.jsonObj.total.jsonObj['total']它沒有改變任何東西。

以前的時間我已經搞砸了,它有時會返回一個錯誤,說它無法從null中獲得'total'。現在它只是不返回任何目前的狀態。到底是怎麼回事?

+1

'console.log(jsonObj)'顯示什麼?它是否在控制檯中顯示「Object」的下拉列表,還是顯示「{」total「:3}'? –

+1

您是否嘗試將'request11.response'的內容打印到控制檯?它看起來很可疑,你在發送請求的時候設置了'onload'回調(我不確定JavaScript是如何容易出現這種競爭狀態的)。你使用某種Web服務器嗎?在「開發者控制檯」的「網絡」選項卡上是否有任何內容(Chrome/Firefox中存在,通過按F12打開)? – yeputons

回答

2

在嘗試訪問total字段之前,您需要將JSON字符串解析爲對象。

var jsonString = "{\"total\": 3}"; 
var jsonObj = JSON.parse(jsonString); 
console.log(jsonObj.total);