【问题标题】:Simple jQuery ajax call doesn't work with rails简单的 jQuery ajax 调用不适用于 rails
【发布时间】:2013-03-07 04:31:15
【问题描述】:

我是 Rails 新手,我试图纠正 application.js 中非常简单的 ajax 调用。

代码如下:

function login(loginUrl) {
    alert(loginUrl);

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

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

谁能帮帮我?

【问题讨论】:

  • 这是因为浏览器限制了名为Same Origin Policyen.wikipedia.org/wiki/Same_origin_policy的ajax
  • @Cypher 请让您的编辑比一个拼写错误更有意义。您正在编辑的问题还存在许多其他错误,您可以同时修复。
  • @Cypher 谢谢;您的编辑有帮助

标签: jquery ruby-on-rails-3.2


【解决方案1】:

这是因为名为@9​​87654321@ 的浏览器限制。它可以防止 javascript 将 ajax 请求发送到与其加载位置不同的域。

在您的情况下,您尝试访问托管在 http://www.w3schools.com 的资源 (http://www.w3schools.com/jquery/demo_test.txt),但发送请求的页面不是来自同一个域,这就是 ajax 请求不起作用的原因。

如果您查看浏览器的控制台,您可能会看到同样的错误。

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

【讨论】:

  • 我又试了一次,如果我用 loginUrl 替换外部 http 地址就可以了。非常感谢! :-)
【解决方案2】:

将“http://www.w3schools.com/jquery/demo_test.txt”替换为您的loginUrl

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-21
    • 2011-07-07
    • 2011-04-04
    • 2011-09-04
    • 1970-01-01
    • 2015-01-16
    • 2018-04-14
    • 2019-07-06
    相关资源
    最近更新 更多