gpt4 book ai didi

jquery - 跨域 JSONP XML 响应

转载 作者:数据小太阳 更新时间:2023-10-29 02:15:53 26 4
gpt4 key购买 nike

我正在使用 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,但随之而来的是它生成了一个错误,提示“意外的 token <”,不幸的是,它停止了我的处理,我没有收到警告消息。有什么想法吗?

最佳

最佳答案

如上面的评论所述,来自 javascript 的跨域 xml 是一个禁忌,除非您可以控制吐出 XML 的应用程序并且可以使用格式化技巧来“欺骗”脚本将其解析为 JSON .如果你能做到这一点,问题就必须是为什么不首先格式化为 JSON?所以...选项

  1. 格式化应用程序的输出以便使用 JSONP 进行处理。假设在你的情况下你不能这样做......
  2. 在您的网络服务器上使用本地代理。在 PHP、python 或任何其他没有跨域限制的语言中,有很多简单的代理示例。就页面上的脚本而言,它是一个本地 AJAX 请求。如果你做不到,那么......
  3. 一种可能性是使用像 yql 这样的中介。 yql 和 jquery 可以解决很多这些 xml 问题。当然,缺点是您要通过您无法控制的第三方发送内容。

像这样:

// 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 语句以带回您想要的内容。

希望对你有帮助

关于jquery - 跨域 JSONP XML 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24377804/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com