jQuery "Access Is Denied"错误

3

我有一个$.ajax()请求,从另一个Web服务器查询货币汇率信息,这就是我认为导致$.ajax()调用出现“访问被拒绝”错误的原因。

是否有一种方式允许这种类型的活动?

1个回答

4

是的,如果远程服务器支持,您可以使用 JSONP(仅适用于GET请求,并且与.ajax函数一起工作)。另一个选项是在同一域上创建桥接服务器脚本。

这里有一篇文章可能会帮助您入门。

下面是它的工作原理:

服务器必须使用以下格式发送数据:

callback({name : "Smith", id : 1})

需要配置回调函数

因此,基本上jQuery在DOM中包含了一个脚本标签:

<script type="text/javascript" src="http://distantdomain.com/?jsonp_callback=someRandomName"></script>

并且someRandomName函数将被执行并传递JSON对象。


我不太确定我理解jQuery ajax方法中的JSONP的工作原理。它提到回调吗? - Jimbo
谢谢。不幸的是,服务器发送回一个 XML 响应,而我无法改变它,所以我需要找另一种方法 :( - Jimbo
回调函数是您定义的匿名函数,一旦服务器响应加载完成,就会被调用,并将JSON对象作为参数传递给此回调函数,以便您可以对其进行操作。 - Darin Dimitrov
如果您需要跨浏览器的解决方案,您需要在您的域上设置一个脚本,该脚本将委派调用到远程服务器,而您的 AJAX 脚本将查询本地服务器。 - Darin Dimitrov
谢谢,有一个明确的答案真不错 :) - Jimbo
+1个好建议,我刚学到了新东西,嘿JIMBO,既然这是一个明确的答案,你应该将其标记为答案(呃)。 - Kronass

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接