跨域调用无法在IE中使用jQuery.ajax

时间:2014-01-03 12:01:37

标签: jquery ajax

jQuery.ajax({
    type: "POST",
    async:false,
    url: restURL,
    data: params,
    crossDomain: true,
    headers: { "Authorization": "Basic " + 'aaa'},
    success: function(respXML) {
            alert("doing stuff");           
    },
    error : function(respXML){
        alert("doing stuff");   
    },
    dataType: "text"
});

2 个答案:

答案 0 :(得分:1)

<强>原理

跨域ajax请求仅适用于GET请求和jsonp通信技术。 当您通过jsonp发送ajax请求时,它会在GET url中写入callback参数并将其发送到您的服务器脚本。您的脚本始终必须返回此calback

来自jquery ajax说明

“jsonp”:使用JSONP加载JSON块。添加额外的“?callback =?”到URL的末尾以指定回调。

如果要在同一域上强制执行跨域请求(例如JSONP),请将crossDomain的值设置为true。例如,这允许服务器端重定向到另一个域

jQuery.ajax({
    async:false,
    url: restURL,
    dataType: 'jsonp',
    data: params,
    crossDomain: true,
    headers: { "Authorization": "Basic " + 'aaa'},
    success: function(respXML) {
            alert("doing stuff");           
    },
    error : function(respXML){
        alert("doing stuff");   
    },
});

答案 1 :(得分:0)

如果它只是IE,那么我建议为jQuery启用cors以允许交叉原始请求,如下所示:

jQuery.support.cors = true;

在致电.ajax之前。在我使用jquery.ajax的经验中,它比大多数域的执行更严格。