Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 轨道&x2B;AJAX返回的HTML比预期的多_Javascript_Jquery_Ruby On Rails_Ruby_Ajax - Fatal编程技术网

Javascript 轨道&x2B;AJAX返回的HTML比预期的多

Javascript 轨道&x2B;AJAX返回的HTML比预期的多,javascript,jquery,ruby-on-rails,ruby,ajax,Javascript,Jquery,Ruby On Rails,Ruby,Ajax,我是Rails的新手,非常欣赏任何见解!更新Rails或Ruby的版本不是一个选项,我被要求使用客户端的当前版本 Ruby版本:1.9.3-p194,Rails版本:3.2.18 我通过JavaScript/jQuery Ajax调用加载动态HTML内容。当我从app/assets/javascripts/application.js内部调用Ajax时,一切都正常。这是电话: $.ajax({ url: '/search/login', cache: true,

我是Rails的新手,非常欣赏任何见解!更新Rails或Ruby的版本不是一个选项,我被要求使用客户端的当前版本

Ruby版本:1.9.3-p194,Rails版本:3.2.18

我通过JavaScript/jQuery Ajax调用加载动态HTML内容。当我从app/assets/javascripts/application.js内部调用Ajax时,一切都正常。这是电话:

$.ajax({
        url: '/search/login',
        cache: true,
        success: function(html){
            console.log('SUCCESS: ', html);
        }
    });
名为html的响应变量包含/search/login.html.erb中的所有html

但是,如果我将该调用移到另一个JavaScript文件,例如app/assets/javascripts/search/jh.js,那么除了返回的HTML比预期的要多得多之外,一切似乎都正常。除了/search/login.HTML.erb中的内容外,它实际上还包含从
的整个HTML DOM树


有人能帮我理解为什么会发生这种情况吗?

您需要指定您不希望为这种类型的ajax调用呈现布局,否则Rails将把它视为包含应用程序或模板布局的标准视图请求。为此,只需将以下内容添加到控制器中的渲染操作

 render layout: false

这会告诉Rails只处理html.erb文件,而不使用为此控制器指定的应用程序布局或其他模板。

您是否在控制器的render语句中尝试了
layout:false
?看起来更像是控制器问题,而不是jQuery问题。你能从search Controller发布这两种方法的代码:
login
jh
?@engineersmnky你搞定了!非常感谢你。如果你留下你的评论作为回答,我会选择它。再次感谢!