// 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')); } });
所请求的页面不会执行任何操作,只能返回单个数字状态代码,除IE9之外,每个浏览器都可以正常工作.该脚本托管在与其请求的页面相同的域上,因此跨域脚本不应该有任何问题.
我终于了解了发生了什么,但我不知道如何解决它.原来,Ajax请求成功完成,没有问题.我通过使用Fiddler查看网络流量来验证这一点.服务器使用HTTP状态代码为200响应请求,并且主体不包含任何单个数字响应代码.此时,jQuery执行错误处理程序,而不是预期的(在IE9中)的成功处理程序.为什么这样做,我该如何防止呢?这只会发生在IE9中.即使IE8和IE7工作正常,与完全相同的代码!正如你可以看到,我终于诉诸于检测IE9并使用XmlHttpRequest对象(这样做很好).
解决方法
/search.json?callback=jQuery16105234487927080267_1313510362362\u0026amp;q=stocks或“股票市场”-blueprint -empireavenue.com -learn& _ = 1313510362469
在每个其他浏览器中,jQuery执行ajax请求时,它看起来像:
/search.json?callback=jQuery16105234487927080267_1313510362362\u0026amp;q=stocks或“股票市场”-blueprint -empireavenue.com -learn& _ = 1313510362469
但是无论什么原因在所有版本的IE它出来像这样:
/search.json?callback=jQuery16105234487927080267_1313510362362\u0026amp;q=stocks或“股票市场”-blueprint -empireavenue.com -learn& _ = 1313510362469
这导致服务器不返回任何数据.