javascript - Rails + AJAX 返回的 HTML 多于预期

标签 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,
        success: function(html){
            console.log('SUCCESS: ', html);
        }
    });

名为 html 的响应变量包含/search/login.html.erb 内的所有 HTML

但是,如果我将确切的调用移至另一个 JavaScript 文件,例如 app/assets/javascripts/search/jh.js,一切似乎都工作正常,只是返回的 HTML 多了很多比预期的。它实际上包含整个 HTML DOM 树,从 <DOCTYPE></html>除了/search/login.html.erb 中的内容。

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

最佳答案

您需要指定您不想渲染此类 Ajax 调用的布局,否则 Rails 会将其视为包含应用程序或模板布局的标准 View 请求。为此,您只需将以下内容添加到 Controller 中的渲染操作

 render layout: false

这告诉 Rails 仅处理 html.erb 文件,而不需要为此 Controller 指定应用程序布局或其他模板。

关于javascript - Rails + AJAX 返回的 HTML 多于预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26224668/

相关文章:

javascript - 使用 JQuery 为我的图像添加动画

javascript - JQuery Mousehold 插件的问题

javascript - 查找未用于应用程序的空闲端口 - 查找一些算法

javascript - 为什么这个错误出现在 chrome load resource: net::ERR_QUIC_PROTOCOL_ERROR

javascript - Google Maps API MVC 示例说明

javascript - 具有收集功能的 rails 中的相关选择框

css - Ruby on Rails + Rspec : Syntax for css selector containing instance variable

javascript - 为什么在计算以下表达式时,big-integer 给出的结果是 `0`?

javascript - 文本字符串输出在第一个空格后停止,js/html

css - 如何在不破坏所有内容的情况下 stub Sprockets 4 中的 Assets ?