我正在使用ajax使用dataType jsonp进行GET,从另一个域上的服务器引入一个小的xml文件,我不拥有也无法更改。除了jsonp之外的任何数据类型都失败,并且“Access-Control-Allow-Origin不允许使用Origin localhost。很好。
问题是,当我说它是jsonp时,服务器返回相同的xml响应,jQuery似乎不喜欢这样。 dataFilter似乎没有帮助,因为即使我引用返回的数据,我得到一个“未捕获的SyntaxError:意外的令牌<”错误。也许有其他方法可以使用dataFilter设置?
我的代码转载如下:
$(document).ready(function(){
$.ajax({
type: "GET",
url: "https://b2b.firstenergycorp.com/invoke/ ... very long url... ",
dataType: "jsonp",
dataFilter: function(data, type){
if(type == "xml") alert("returned xml!");
var newdata = data.replace(/</g, '{'); // Firebug complains about this
newdata = newdata.replace(/>/g, '}');
return newdata;
},
jsonp: "callback",
jsonpCallback: "jsonpcallback"
});
function jsonpcallback(returndata) {
alert( "data returned: " + returndata );
};
});
答案 0 :(得分:0)
答案来自另一个stackoverflow问题: Jquery success function not firing using JSONP
“......事后看来,解决方案可能应该比以前更加明显,但是您需要将Web响应直接写入响应流。只需返回一串JSON就不会这样做,你需要有人构建它并将其流回。