我实际上一直在尝试调试它一整天,这完全令人困惑。寻找一些提示。
我在 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 的下一行,它抓住了正确的标题!'嗨2'
接下来我将调试器语句放入成功函数中:ret_json 看起来完全正确,但是当我进入 bar() 函数时.. 数据再次看起来错误。
接下来我补充:
var hi = {};
console.log(hi);
进入成功功能..它打印出来..(不是开玩笑)
{'url':'http://c.com', 'title':'hi3'}
所以基本上,这个“默认”正在覆盖实际存在的任何内容。
我已经在 ajax 调用中添加了 cache:false,我尝试过 json 和 jsonp,我尝试过清除缓存,我尝试过使用 chrome/safari/firefox .. 但什么也没做,我怀疑这很明显。 ..这真的很糟糕。
关于我可以尝试的任何其他想法?
更新:将此命名空间添加到不同的 html 页面。最令人震惊的例子
var hi = {}
console.log(hi)
打印的东西不见了,但 ret_json 数据错误的原始问题仍然存在。(我仍然无法访问上一个 html 页面的工作版本)