我很难让这个脚本工作.它基本上是一个简单的ajax调用,用于从PHP中检索返回
JSON代码的数据.
function refreshWindows(){ if(AjaxPull && AjaxPull.readystate != 4){ AjaxPull.abort(); } AjaxPull = $.ajax({ type: 'POST',url: $path,data: { ajax: true,mode: 'update',to: Math.round(currentDate.getTime() / 1000),from: Math.round(prevIoUsDate.getTime() / 1000) },dataType: "json",success: function (data) { alert(data); //that's for debug $replies = data.Updates; $.each($replies,function(group,value) { if (value!=''){ $("#group"+group+" .content").append(value); $("#group"+group+" .content").stop().animate({ scrollTop: $("#group"+group+" .content")[0].scrollHeight },800); if (!$("#group"+group+" .Window").is(':visible')) { $("#group"+group+" .BottomBox").fadeTo('fast',0.5).fadeTo('fast',1.0); } } }); prevIoUsDate = currentDate; currentDate = new Date(); timeController.push( setTimeout(function(){refreshChatWindows();},500) ); } });
}
我在Internet Explorer中遇到的错误是:
SCRIPT5007: Unable to get value of the property ‘Updates’: object is null or undefined
在Firefox和谷歌浏览器中一切正常.
最初我的代码是使用.get编写的,但有人建议切换到.ajax – 好吧,它没有帮助.我尝试使用.done(函数(数据){但它也没有工作.我也尝试发送我的URL中与data属性相反的所有数据,它在FF中工作正常,但IE仍然弹出相同的错误.最后我尝试在PHP中添加不同的标题,例如标题(‘Content-Type:application / json’);但它没有改变任何东西.我没有想法/可能的解决方案我可以在stackoverflow上使用,所以任何帮助将不胜感激.
在IE中,我访问了开发人员工具,网络选项卡,并尝试查看是否一切正常 – 是的,请求正在正确发送所有数据,我收到的响应是正确的JSON,就像在Firefox中一样:
{"Updates":{"1":"","2":"","3":"","5":"","6":"","7":"","8":""},"time":{"from":"1367489761","to":"1367489761"}}
这让我很困惑,因为我曾经认为未定义的错误可能只是因为某些东西因为某些原因没有在IE中被发回而发生,但显然:事实并非如此.我收回了我的JSON.只有IE出于某种未知原因仍然认为数据未定义.