我正在使用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);
},
})
},
我在这里遗漏了什么吗?请帮忙
答案 0 :(得分:1)
尝试添加:
crossDomain: true,
除此之外,我在这里看不到任何错误。
答案 1 :(得分:1)
将JSONP用于Cross-domain requests
因为不直接允许跨域请求。但是,有一种常用的技术称为JSONP,它允许您通过使用脚本标记来避免此限制。基本上,您使用已知名称创建回调函数:
function getData(data) {
}
然后您的服务器在函数调用中包装JSON数据,如下所示:
getData({"the": "data"});
您可以通过向网页添加script
标记来“呼叫”跨域服务器。 jQuery在ajax
函数中优雅地包含了所有这些。
我必须使用的另一种技术是通过iframe进行跨文档通信。您可以通过postMessage以受限制的方式让一个窗口与另一个窗口(甚至是跨域)进行对话。请注意,只有最近的浏览器具有此功能,因此在不诉诸hackery的情况下,该选项在所有情况下都不可行。