0

我正在使用 jquery ajax 进行跨域获取,但我在错误函数中获得了成功作为状态。我期望从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);
        },

    })
},

我在这里错过了什么吗?请帮忙

4

2 回答 2

1

尝试添加:

crossDomain: true,

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

于 2013-09-25T14:29:20.133 回答
1

使用JSONP _Cross-domain requests

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

function getData(data) {       
}

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

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

script并且您通过向您的页面添加标签来“调用”跨域服务器。jQuery 优雅地将所有这些封装在它的ajax函数中。

我有时不得不使用的另一种技术是通过 iframe 进行跨文档通信。您可以通过postMessage以受限的方式让一个窗口与另一个窗口对话,甚至跨域对话。请注意,只有最近的浏览器才有此功能,因此如果不求助于骇客,该选项并非在所有情况下都可行。

参考 1

参考 2

jQuery AJAX 跨域

于 2013-09-25T14:36:54.917 回答