我有一个脚本,它向远程服务器发出ajax请求,返回纯文本响应。它在除IE8(震撼)之外的所有浏览器中都能正常工作。
这是代码:
$.ajax({
url: 'abc.com/?somerequest=somevalue',
cache: false,
type: 'POST',
data:{
sub: 'uploadprogress',
uploadid: this.uploadId
},
dataType: 'html',
success: this.uploadProgressResp,
error: this.errorResp
});
在IE8中,它返回“无传输”错误。我想这是因为IE8不允许跨域请求?
注意: 我没有为远程服务器编写API。如果我这样做,我会返回JSON响应而不是纯文本响应。所以是的,dataType应该是HTML而不是JSON。
RANT:我讨厌IE,希望它能从地球上消失
尝试在之前的某处添加此内容 ajax电话 - 最好 它的位置是在任何其他JavaScript执行之前!
jQuery.support.cors = true;
如果没有这个,Internet Explorer将抛出“无传输”错误。错误消息本身相当令人困惑,但默认情况下,跨域ajax请求被IE阻止,但其他浏览器似乎不是这样 - 或者至少Chrome和Firefox会起到这种作用。
历史上,我在这个问题上分享了你的痛苦。非常有信心它会对你的问题进行排序。
我知道这是一个非常古老的问题,但遗憾的是人们仍在使用IE8 / 9,有时我们必须支持他们:/
这是我能找到的最佳解决方案:
https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
只需在您的html中包含以下脚本即可,您无需修改jQuery请求中的任何内容
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.3/jquery.xdomainrequest.min.js"></script>
限制:
- 不支持IE6 / 7,仅支持IE8和IE9
- 最低jQuery版本是1.5
- 在IE8 / 9中使用POST方法时,
Content-Type
标题总是会的
设置 text/plain
- 当前网站和请求的URL都必须使用相同的协议(HTTP-> HTTPS或HTTPS-> HTTP请求不起作用)