我遇到了一个奇怪的问题,jquery.load有时会在chrome上失败。我不会用细节来打扰你们,我只是在寻找一个指针,告诉你们我如何调试这样的问题?
我想也许firebug会有所帮助,但这个问题只发生在chrome上(甚至适用于IE)。
我做了一些类似的事情:
$("#contentid").html("Plz wait.");
$("#contentid").load(url);
$("#contentid").show();
我在#contentid上只得到了"Plz wait",我可以看到url被调用,并手动检查它,看到它成功了。
更新2:
所以我根据的建议更改了负载调用
$('#conentid').load(url, function(response, status, xhr){
alert('Load was performed. url:' + url);
if (status == "error")
{
alert("text: " + xhr.statusText);
alert("readyState: "+xhr.readyState+"'nstatus: " + xhr.status);
alert("responseText: "+xhr.responseText);
}
else
{
$("#conentid").show();
}
});
当出现错误时,我会得到状态=="错误"。
xhr.statusText:0
xhr.readyState:4
xhr.statusText和xhr.responseText为空
知道为什么吗?这是什么意思?
url可以手动工作。这个错误只发生在chrome上,有时也会发生
Chrome实际上拥有相当不错的开发工具。单击扳手图标,从菜单中选择开发工具。
关于这个特定的问题,我敢打赌,在加载完成之前会调用show——加载是异步发生的。在#contentid
上为"on load"设置一个事件处理程序,并在其中进行显示。
更新
事实上,有更好的方法;将您的show
放入load
函数的回调中:
$('#conentid').load('ajax/test.html', function() {
alert('Load was performed.');
$('#contentid').show();
});
另一次更新
好的,就绪状态4表示XmlHTTPRequest正常完成。现在,这里有一个歧义:xhr.statusText是0还是空?在另一个浏览器上,您从该代码(包括错误代码)中看到了什么结果?
如果它在firefox上工作,并且只在Chrome上工作,那么你可能会有一个真正的Chrome错误。
也许其他人可以对这个答案做出解释,但问题是:
我有基本href TAG(<base href="http://domain.com/" />
)
有一些关于使用jquery+base href的问题的参考资料。我不知道为什么,但删除这行修复了一切。感谢您的帮助,在此过程中我学到了一些web调试''ajax技巧。