2010-03-30 93 views
1

所以我遇到了这个问题。我试图使用$ .get()与Drupal 6.16中的REST应用程序进行交互,该应用程序使用jQuery 1.2.6

我在桌面上有一个测试页,我运行以下代码,并且它成功运行警报。

url = 'http://api.twitter.com/1/help/test.xml'; 
    $.get(url, function(){alert("WORKING!!");}, 'xml'); 

但是,当我尝试在Drupal中运行它时,警报从未达到。出于某种原因,该功能从未被触发。

任何想法?

+1

哇...... 1.2.6已经够老了,可以在博物馆里了。令人惊讶的Drupal不会让它保持最新! – Matt 2010-03-30 22:56:14

+1

使用Firefox和Firebug并查看控制台是否有任何JS错误。 – 2010-03-30 22:57:03

+0

我使用Firefox和Firebug,并且没有错误。是的,这是一个旧版本。看起来他们有与之相关的代码,所以这就是为什么他们不更新它。无论如何,我在我的测试页面中测试了旧的jquery,并且它工作正常。 – 2010-03-30 22:59:28

回答

2

所有我不得不说这是:

Same origin policy

概括地说,政策允许在访问每个 其他的方法和属性来自同一个站点始发 网页运行 脚本没有 特定的限制,但可以阻止 访问不同网站上跨页面的大多数方法和属性 。

而这正是你想要做的。将ajax请求发送到不同的域,然后在脚本所在的位置。这不起作用,因为相同的来源策略禁止跨域请求。

检查是否提供jsonp api并阅读jQuery.ajax()文档如何使用/使jsonp跨域请求。现在很明显,警报从来没有达到,因为调用不成功,jQuery因此不会调用您指定的成功回调。

+0

谢谢,抖动!我忘记了这个政策。 :)现在我可以从这里开始:) – 2010-03-30 23:23:31