跨源Ajax请求在Opera和IE9中不起作用?
我正在使用此页面 – http://ecmazing.com/cors.html – 对此资源发出跨域Ajax请求: http : //hacheck.tel.fer.hr/xml.pl
它适用于Chrome,Safari和Firefox,但不适用于IE9和Opera。
代码:
var pdata = {'textarea': 'test'}; $.post('http://hacheck.tel.fer.hr/xml.pl', pdata, function(data, status, xhr) { output.value = xhr.responseText; });
(预期的结果是XML代码字符串。)
亲眼看看: http : //ecmazing.com/cors.html
在IE9和Opera中,XHR对象的error
处理程序执行,并传入此错误对象:
{ readyState: 4, status: 0, statusText: 'error' }
如您所见,此错误对象未显示太多信息。
如何让它在IE9和Opera中运行?
请参阅whencaniuse上的cors条目。
对于Internet Explorer,CORS是“使用XDomainRequest对象在IE8和IE9中稍微支持”,因此您需要使用备用对象来使用它。
Opera根本不支持它。
如果您需要Opera中的跨域Ajax,请使用JSON-P。
尝试将CORS与IE和jQuery一起使用时,我感到非常沮丧,我编写了一个库来平滑最糟糕的部分。
是的,微软现金和人力短缺使他们无法在短短几年内使他们的浏览器符合CORS标准,但我仍然更喜欢CORS和JSONP,坦率地说,这是一个黑客攻击。
这是一个适用于IE的解决方案。