2013-03-07 44 views
0

我是Rails的新手,我试图在application.js中调用非常简单的ajax调用。简单的jQuery ajax调用不能用于rails

下面的代码:

function login(loginUrl) { 
    alert(loginUrl); 

    $.ajax('http://www.w3schools.com/jquery/demo_test.txt', {success: function (result) { 
     alert(result); 
    }}); 
} 

当函数被调用时,第一次警报效果很好。但是,似乎下面的ajax调用永远不会通过,第二个警报从不执行。我在w3school.com上试过这个代码,它运行良好。我真的很困惑为什么这个简单的代码不适用于Rails。

任何人都可以帮我吗?

+1

这是因为AJAX的浏览器限制,叫做'同源Policy'的http://en.wikipedia.org/wiki/Same_origin_policy – 2013-03-07 04:35:34

+0

@Cypher请进行编辑比单个错字更实质。您正在编辑的问题也存在很多其他可以同时修复的错误。 – doppelgreener 2014-05-08 04:40:45

+0

@JonathanHobbs我只是修复标题,因为太多的问题一个一个的审查,这个想法是,与标题安排这些问题可用于谷歌 – TlonXP 2014-05-08 04:44:24

回答

0

这是因为浏览器限制名为Same Origin Policy。它阻止了javascript发送ajax请求到一个不同于它被加载的域。

在你的情况,你试图访问一个资源(http://www.w3schools.com/jquery/demo_test.txt)主办的http://www.w3schools.com但发送请求页面不是来自这就是为什么Ajax请求不能正常使用相同的域。

如果你看看你的浏览器的控制台,你可能会看到一个相同的错误。

同源策略的解决方案是使用jsonpWhat is JSONP all about?),但约束是服务器应该支持jsonp。

+0

谢谢。你是对的。 – user2142709 2013-03-07 04:41:37

+0

检查您的浏览器控制台是否有任何错误 – 2013-03-07 04:42:23

+0

我再次尝试,如果我用loginUrl替换外部http地址,它会起作用。非常感谢! :-) – user2142709 2013-03-07 04:45:56