rus*_*nge 10 ajax jquery internet-explorer-9
我有一个网站,我在这里做一个像这样的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'));
}
});
Run Code Online (Sandbox Code Playgroud)
被请求的页面没有做任何事情,只返回一位数的状态代码,它适用于除IE9之外的每个浏览器.该脚本与其请求的页面托管在同一个域中,因此跨域脚本编写不会出现任何问题.
我终于找到了正在发生的事情,但我不知道如何解决它.事实证明,Ajax请求成功完成,没有任何问题.我通过使用Fiddler来查看网络流量来验证这一点.服务器使用HTTP状态代码200响应请求,并且正文除了单个数字响应代码之外不包含任何内容.此时,jQuery执行错误处理程序,而不是预期的成功处理程序(在IE9中).为什么这样做,我该如何防止它?这只发生在IE9中.即使IE8和IE7使用完全相同的代码也能正常工作!正如您所看到的,我最终使用了检测IE9并使用XmlHttpRequest对象来执行此操作(顺便说一句,它工作正常).
这对我来说似乎是一个jQuery错误,但我在搜索中找不到它.我真的是唯一一个遇到这种奇怪行为的人吗?
好吧,我终于找到了问题所在.事实证明,由于某种原因,jQuery/IE没有正确地urlencode双引号.请求的URL是:
/search.json?callback=jQuery16105234487927080267_1313510362362&q=stocks或"股市"-blueprint -empireavenue.com -learn&_ = 1313510362469
在jQuery执行ajax请求时,在每个其他浏览器中,它看起来像:
/search.json?callback=jQuery16105234487927080267_1313510362362&q=stocks%20OR%20%22stock%20market%22%20-blueprint%20-empireavenue.com%20-learn&_=1313510362469
但无论出于什么原因,IE的所有版本都出现如下:
/search.json?callback=jQuery16105234487927080267_1313510362362&q=stocks%20OR%20"stock%20market"%20-blueprint%20-empireavenue.com%20-learn&_=1313510362469
这导致服务器不返回任何数据.
| 归档时间: |
|
| 查看次数: |
26208 次 |
| 最近记录: |