gpt4 book ai didi

javascript - 使用 jQuery 从跨域 Ajax 请求接收 XML 响应

转载 作者:可可西里 更新时间:2023-11-01 02:39:41 25 4
gpt4 key购买 nike

我试图向另一个域发出 ajax 请求,它已经可以工作,但现在我遇到了另一个问题...

这是我的代码:

function getChannelMessages(channel) {
jQuery.support.cors = true;
$.ajax(channel, {
cache : true,
type : "get",
data : _channels[channel].request,
global : false,
dataType : "jsonp text xml",
jsonp : false,
success : function jsonpCallback (response) {
console.log(response);
updateChannelRequest(channel);
//getChannelMessages(channel);
}
});
}

正如我所说,它已经可以工作,但问题是服务器返回一个 XML(不是我的服务器,是另一家公司的另一台服务器 - 一个网络服务 - 所以我无法更改它返回的内容)并且正如 jsonp 所期望的那样一个 json 它失败并出现错误:

SyntaxError: syntax error
<?xml version="1.0"?><ReceiveMessageResponse xmlns="http://q ... />

根据 jQuery 文档,添加 jsonp text xml 应该会产生魔力,将响应转换为简单文本,然后将其解析为 XML,但它不起作用。

我已经能够使用 YQL 来实现它,但它有每小时 10,000 个请求的限制,而我正在开发的系统每小时最多有 1000 万个请求。出于同样的原因,我不能在我自己的服务器中“代理”那些请求......

仅供引用:我正在尝试从 SQS 获取最新消息,因此如果无论如何告诉它以 json 形式返回数据,它会更容易和更好,但我在文档中也没有找到任何内容。 ..

最佳答案

我的问题的简单答案是:只有两种方法可以做到这一点:

  1. 使用代理。我不会在这里列出所有的操作方法,但是您可以在网上搜索“cors”、“cross domains ajax requests”和“yql”(最后一个是 Yahoo 的代理)找到很多信息

  2. 使用 CORS。这是 Cross-Origin Resource Sharing .即:激活您要从中获取信息的服务器,以将信息发送到任何其他域并响应来自任何其他域的请求。为此,您必须是管理服务器/服务的人。

这两种是从另一个域获取信息 XML(或任何其他格式)的唯一方法。发起json跨域请求:

  • 使用 jsonp(Json 填充)。我不会解释这个(实际上只是额外的信息,因为如果服务器的答案是 XML,它就不会工作——我的主要问题),原因 there is a lot of information on the web .

不幸的是,我无法实现我的目标,因为 SQS 没有配置为任何这些方法......不过,我对跨域请求的工作原理有很多了解。我希望这对任何人都有帮助...

关于javascript - 使用 jQuery 从跨域 Ajax 请求接收 XML 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15552375/

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