我有一个网站,我做一个这样的ajax电话:
// perform an ajax request to generate a new subscriber account jQuery.ajax({ type: 'POST',url: '/index.PHP?option=com_content&view=article&id=45&tmpl=component',data: postVars,success: handleResponse,error: function(jqXHR,textStatus,errorThrown) { alert ('response: ' + jqXHR.responseText); alert ('code: ' + jqXHR.getResponseHeader('X-Subscriber-Status')); } });@H_301_4@所请求的页面不会执行任何操作,只能返回单个数字状态代码,除IE9之外,每个浏览器都可以正常工作.该脚本托管在与其请求的页面相同的域上,因此跨域脚本不应该有任何问题. @H_301_4@我终于了解了发生了什么,但我不知道如何解决它.原来,Ajax请求成功完成,没有问题.我通过使用Fiddler查看网络流量来验证这一点.服务器使用HTTP状态代码为200响应请求,并且主体不包含任何单个数字响应代码.此时,jQuery执行错误处理程序,而不是预期的(在IE9中)的成功处理程序.为什么这样做,我该如何防止呢?这只会发生在IE9中.即使IE8和IE7工作正常,与完全相同的代码!正如你可以看到,我终于诉诸于检测IE9并使用XmlHttpRequest对象(这样做很好). @H_301_4@这似乎是一个jQuery错误,但我在搜索中找不到任何提及.我真的是唯一经历这种奇怪行为的人吗?
解决方法
那我终于找到了这个问题.原来,由于某种原因,jQuery / IE不正确urlencode双引号.请求的URL为:
@H_301_4@/search.json?callback=jQuery16105234487927080267_1313510362362\u0026amp;q=stocks或“股票市场”-blueprint -empireavenue.com -learn& _ = 1313510362469
@H_301_4@在每个其他浏览器中,jQuery执行ajax请求时,它看起来像:
@H_301_4@/search.json?callback=jQuery16105234487927080267_1313510362362\u0026amp;q=stocks或“股票市场”-blueprint -empireavenue.com -learn& _ = 1313510362469
@H_301_4@但是无论什么原因在所有版本的IE它出来像这样:
@H_301_4@/search.json?callback=jQuery16105234487927080267_1313510362362\u0026amp;q=stocks或“股票市场”-blueprint -empireavenue.com -learn& _ = 1313510362469
@H_301_4@这导致服务器不返回任何数据.