[英]jQuery cross-domain AJAX request works on one page, but not another
[英]Receive XML response from Cross-Domain Ajax request with jQuery
我试图向另一个域发出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(不是我的服务器,是另一家公司的另一台服务器 - 一个Web服务 - 所以我无法改变它返回的内容),而且jsonp期望一个json它失败并出现错误:
SyntaxError: syntax error
<?xml version="1.0"?><ReceiveMessageResponse xmlns="http://q ... />
根据jQuery文档,添加jsonp text xml
应该是神奇的,将响应转换为简单文本,然后将其解析为XML,但它不起作用。
我已经能够使用YQL,但它每小时限制10,000个请求,我正在开发的系统每小时将有多达1000万个请求。 出于同样的原因,我无法在我自己的服务器中“代理”这些请求......
仅供参考:我正在尝试从SQS获取最新的消息,所以如果无论如何要告诉它将数据作为json返回,它会更容易也更好,但我在文档中找不到任何东西......
对我的问题的简单回答是:只有两种方法可以做到这一点:
使用代理。 我不会把所有的方法都放在这里,但你可以在网上找到很多信息,搜索“cors”“跨域ajax请求”和“yql”(这最后是Yahoo的代理)
使用CORS。 这是跨源资源共享 。 即:激活要从中获取信息的服务器,以将信息发送到任何其他域并回答来自任何其他域的请求。 为此,您必须是管理服务器/服务的人。
这两个是从另一个域获取信息XML(或任何其他格式)的唯一方法。 要使json跨域请求:
不幸的是我无法完成我的目标,因为SQS没有配置任何这种方法......但是,我对Cross-Domains请求的工作原理有了很多了解。 我希望这有助于任何人......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.