Rails 3.2.6 - .js.erb什么都不做

时间:2012-10-09 04:19:13

标签: jquery ruby-on-rails

我有一个相当简单的演示应用程序来学习AJAX / jQuery。

  1. 在assets / javascripts / runner.js中,我有以下代码:

    $(document).ready(function() {
        $.ajaxSettings.accepts.html = $.ajaxSettings.accepts.script;
    
        $.ajax({
            type: "POST",
        url: "http://localhost:3000/home/index",
            data: { name: "John", age: "35" },
            dataType: 'html'
        });
    }
    
  2. 这正确地调用了home / index,其中我在索引操作中有以下代码:

    respond_to do | format |        format.js    端

  3. 这似乎正确地调用了index.js.erb,我有:

    警报( “HI”);

  4. 问题是警报没有显示出来!我可以在FireBug的控制台中看到我在XHR响应中正确地“警告(”hi“),但是警报没有执行!

  5. 任何帮助?

1 个答案:

答案 0 :(得分:1)

您实际上并没有处理ajax调用的结果。返回的javascript永远不会被浏览器评估。应该更像这样:

$(document).ready(function() {
    $.ajaxSettings.accepts.html = $.ajaxSettings.accepts.script;

    $.ajax({
        type: "POST",
        url: "http://localhost:3000/home/index",
        data: { name: "John", age: "35" },
        dataType: 'html',
        success: function(data) {
            eval(data);  // where data is the javascript generated by home#index
        }
    });
}

请记住,如果有人能够控制此返回的javascript的内容,则可能会让自己面临一个讨厌的脚本注入漏洞。