跨源Ajax请求在Opera和IE9中不起作用?

Šim*_*das 14 javascript ajax jquery cross-domain cors

我正在使用此页面 - 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;
});
Run Code Online (Sandbox Code Playgroud)

(预期结果是XML代码字符串.)

亲眼看看: http ://ecmazing.com/cors.html

在IE9和Opera中,errorXHR对象的处理程序执行并传入此错误对象:

{
    readyState: 4,
    status: 0,
    statusText: 'error'
}
Run Code Online (Sandbox Code Playgroud)

如您所见,此错误对象未显示太多信息.

如何让它在IE9和Opera中运行?

Que*_*tin 9

请参阅whencaniuse上的cors条目.

对于Internet Explorer,CORS是"使用XDomainRequest对象在IE8和IE9中稍微支持",因此您需要使用备用对象来使用它.

Opera根本不支持它.

如果您需要Opera中的跨域Ajax,请使用JSON-P.


Mal*_*lio 6

尝试将CORS与IE和jQuery一起使用时,我感到非常沮丧,我写了一个来平滑最糟糕的部分.

是的,微软现金和人力短缺使他们无法在短短几年内使他们的浏览器符合CORS标准,但我仍然更喜欢CORS和JSONP,坦率地说,这是一个黑客攻击.