enter code here
有第三方网络服务(soap)从其网站上的搜索中返回值。我可以使用包含搜索参数的普通旧URL来调用此服务。恩。城市,州或邮编。此服务返回格式良好的XML字符串。
问题是......使用Javascript,我可以毫无问题地调用服务/网址。
但回调失败了。显示的消息表示解析错误。
使用firefox和firebug,我可以看到结果正确返回,只是用普通的旧XML。
似乎ajax回调试图解析结果,但它失败了。
此第三方位于完全不同的网站上,因此适用跨站点脚本规则。
所以问题是......
1)有没有办法不执行解析,只是得到结果? 2)我是否可以调整任何其他参数,以便我查看和处理结果集?
以下是我正在使用的代码......
function LoadMenu() {
varType = "GET";
varUrl = "https://www.xxxx.com/soap/352mg/xml.php?callback=?";
varData = { zip: 68105 };
varContentType = "text/xml; charset=utf-8";
varDataType = "jsonp";
varProcessData = false;
$.ajax({
crossdomain: true,
type: varType, //GET or POST or PUT or DELETE verb
url: varUrl, // Location of the service
data: varData, //Data sent to server
contentType: varContentType, // content type sent to server
dataType: varDataType, //Expected data format from server
processdata: false, // varProcessData, //True or False
success: function (msg) {//On Successfull service call
serviceSucceeded(msg);
},
error: ServiceFailed// When Service call fails
});
}
答案 0 :(得分:0)
JSONP是跨域限制的hacky解决方案,它在html中包含一个新的脚本标记,因此浏览器会自动解析src。你无法禁用它。
如果您需要获取XML并且他们不提供JSONP或某种跨域请求(如CORS),那么您将需要设置代理。通过设置代理,您可以使用其他方式(如PHP)获取数据,然后将其重新路由到您域中可能需要的任何页面。