2010-05-21 208 views
3

我有一个$.ajax()请求查询来自另一个web服务器的货币汇率信息,这就是我在$.ajax()调用中得到“访问被拒绝”错误的原因(我相信) 。jQuery“拒绝访问”错误

有没有办法允许这种类型的活动?

回答

4

是的,如果远程服务器可以支持它,则可以使用JSONP(只适用于GET请求,它也适用于.ajax函数)。另一种选择是在同一个域上创建一个网桥服务器脚本。

这里的an article可能会帮助您开始。

下面是它如何工作的:

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

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

其中callback必须是可配置的。

所以基本上jQuery包含在DOM内部的script标签:

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

someRandomName功能将被执行,并通过了JSON对象。

+0

我不太确定我了解JSONP如何在jQuery ajax方法中工作。它谈到回调? – Jimbo 2010-05-21 11:10:16

+0

谢谢。不幸的是,服务器发回一个XML响应,我不能改变,所以我需要找到另一种方式:( – Jimbo 2010-05-21 11:17:11

+0

回调是一个匿名函数,你定义的,并且一旦服务器的响应被调用这个回调会传递JSON对象作为参数,这样你就可以操纵它了 – 2010-05-21 11:17:37