Jquery Ajax cross Domain在error函数中返回成功状态

时间:2013-09-25 14:21:36

标签: javascript jquery ajax

我正在使用jquery ajax进行跨域get,但我在error函数中获得了成功状态。 我期待从get服务返回的数据是:

document.write("<div class=\"display_archive\"><div class=\"campaign\">07\/18\/2013 - <a href=\"http:\/\/us6.campaign-archive2.com\/?u=c7b9b2f23eb4f63fgfgf5ac4f&id=99e1f5f249\" title=\" Newsletter #3\" target=\"_blank\">Newsletter #3<\/a><\/div>");

但我得到的是error function

Object { readyState=4, status=200, statusText="success"}

我的代码

getResource : function ( containerSelector,serviceURL ) {
    $.ajax ({
        type : "GET",

        dataType: 'jsonp',

        jsonpCallback: 'jsonCallback',

        url : serviceURL,

        headers : {
            "Accept" : "application/json",
            "Content-Type" : "application/json"
        },

        success : function successData(resourceObj) {
            console.log("success ");
            console.log(resourceObj);
        },

        error : function errorData(resourceObj) {
            console.log("error ");
            console.log(resourceObj);
        },

    })
},

我在这里遗漏了什么吗?请帮忙

2 个答案:

答案 0 :(得分:1)

尝试添加:

crossDomain: true,

除此之外,我在这里看不到任何错误。

答案 1 :(得分:1)

JSONP用于Cross-domain requests

因为不直接允许跨域请求。但是,有一种常用的技术称为JSONP,它允许您通过使用脚本标记来避免此限制。基本上,您使用已知名称创建回调函数:

function getData(data) {       
}

然后您的服务器在函数调用中包装JSON数据,如下所示:

getData({"the": "data"});

您可以通过向网页添加script标记来“呼叫”跨域服务器。 jQuery在ajax函数中优雅地包含了所有这些。

我必须使用的另一种技术是通过iframe进行跨文档通信。您可以通过postMessage以受限制的方式让一个窗口与另一个窗口(甚至是跨域)进行对话。请注意,只有最近的浏览器具有此功能,因此在不诉诸hackery的情况下,该选项在所有情况下都不可行。

Refrence 1

Refrence 2

jQuery AJAX cross domain