私は文字通りこれを丸一日デバッグしようとしてきましたが、まったく当惑しています。いくつかのヒントを探しています。
私はこれらの関数をjavascript名前空間内に持っています:
var ZZ = {
bar: function(data) {
console.log(data);
},
foo: function() {
$.ajax({
'url':'/test',
'type':'GET',
'dataType':'jsonp',
'success':function(ret_json, status) {
console.log(ret_json); // SUCCESS_1
console.log(ret_json[1].title); //SUCCESS_2
bar(ret_json);
}
});
},
...
}
だから私は開発者ツールの「ネット」タブを見て、返されたjsonは正しい..のようなもの:
[{'id':1, 'url':'http://a.com', 'title':'hi'}, {'id':2, 'url':'http://b.com', 'title':'hi2'}]
コンソールを見ると、SUCCESS_1 で次のような出力が表示されることがわかります。
[{'id':1, 'url':'http://c.com', 'title':'hi3'}, {'id':2, 'url':'http://c.com', 'title':'hi3'}]
ご覧のとおり、id は正しいのですが、url と title は正しくありません。(データベース内の ID を変更することもでき、それらは正しく実行されます)
SUCCESS_2 の次の行では、正しいタイトルが取得されます。'hi2'
次に、success 関数にデバッガー ステートメントを挿入します。
次に追加します:
var hi = {};
console.log(hi);
成功関数に..出力されます..(冗談ではありません)
{'url':'http://c.com', 'title':'hi3'}
基本的に、この「デフォルト」は実際にあったものを上書きします。
cache:false を ajax 呼び出しに追加しました。json と jsonp を試しました。キャッシュをクリアしてみました。chrome/safari/firefox を使用してみました。 .. それは jsut 本当に本当に effeded です。
私が試すことができる他のアイデアはありますか?
UPDATE : この名前空間を別の HTML ページに追加します。~の最もひどい例
var hi = {}
console.log(hi)
印刷物はなくなりましたが、ret_json のデータが間違っているという元の問題はまだ存在しています。(以前の HTML ページの作業バージョンにはまだアクセスできません)