2017-02-03 11 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解析で正常に使用したのと同じ正確なメソッドを使用してtotalの値を抽出しようとしています。

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); 
関連する問題