我正在使用JSONP进行api跨域请求,并且外部服务器以XML返回我的结果,以下是我的代码:
$.ajax({ type: "Get", url: "http://domain.com/function?Data=1234567890", xhrFields: {withCredentials: true}, dataType: "JSONP text xml", contentType: "application/xml", cache: false, success: function(xml) { alert($(this).find('ResponseStatus').text()); } });
它返回给我一个xml,但随之产生一个错误,提示“意外令牌<”,不幸的是停止了我的处理,但我没有收到警告消息。任何想法?
最好
正如上面的评论中提到的那样,除非您能够控制吐出XML的应用程序并可以使用格式化技巧来“欺骗”脚本以将其解析为JSON,否则javascript的跨域xml是不行的。如果您可以这样做,那么问题就必须是为什么不首先将格式设置为JSON?所以…选项
像这样:
// find some demo xml - DuckDuckGo is great for this var xmlSource = "http://api.duckduckgo.com/?q=StackOverflow&format=xml" // build the yql query. Could be just a string - I think join makes easier reading var yqlURL = [ "http://query.yahooapis.com/v1/public/yql", "?q=" + encodeURIComponent("select * from xml where url='" + xmlSource + "'"), "&format=xml&callback=?" ].join(""); // Now do the AJAX heavy lifting $.getJSON(yqlURL, function(data){ xmlContent = $(data.results[0]); var Abstract = $(xmlContent).find("Abstract").text(); console.log(Abstract); });
当然,在该示例中,您要带回所有xml数据并在本地进行搜索-该选项可以调整select语句以带回您想要的内容。
希望能有所帮助