【问题标题】:javascript code or json objects as ajax response?javascript 代码或 json 对象作为 ajax 响应?
【发布时间】:2014-04-23 20:38:08
【问题描述】:

我正在阅读 Rails 指南,特别是我正在阅读以下内容:http://guides.rubyonrails.org/working_with_javascript_in_rails.html#server-side-concerns 让我有点困惑的部分是响应。它表示如果创建操作接收到 AJAX 请求,那么它将返回将用户插入页面的 javascript 代码。我找到了其他解决方案,其中客户端接收 json 对象(而不是 javascript 代码)并构建相应的 DOM 元素并将它们插入页面中。我的问题是:

  1. 接收 json 对象并构建 DOM 元素并将它们插入页面是否比接收 javascript 代码并执行它以便将新内容添加到页面中更好?有哪些最佳做法?
  2. 在这个例子中,ajax 调用会收到什么? javascript 代码、json 对象还是两者兼而有之?

【问题讨论】:

    标签: javascript ruby-on-rails ajax json


    【解决方案1】:

    没有对错之分。在您引用的示例中,ajax 调用将接收 javascript,然后它将在浏览器中执行。但是,您可能希望在 javascript 响应中嵌入 html。例如,这是在响应中插入的 rails 部分:

    Controller:
    
    def create
       @user=User.new(:user_params)
       @user.save
       respond_to do |format|
         format.js()
       end
    end
    
    View:create.js
    
    $("#user_list").append('<%=render(partial:'user_row')%>')
    
    Partial: _user_row.html.erb
    
    <div class="user-row"><%=@user.name%></div>
    

    partial 将自动访问创建控制器方法中的变量。如果您要插入的 html 很大或很复杂,这可以大大简化您的代码并使其更具可读性。

    为了在响应 json 时做同样的事情,正如您所说,您必须手动构建 DOM 元素。如果服务器资源有限,或者您希望限制通过网络发送的数据量,您更愿意手动构建 DOM 元素。请注意,当您使用 json 响应时,大部分工作都在浏览器中完成,您只需发送一个 json 对象,而不是嵌入 html 的 javascript。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 2014-06-06
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      • 2022-08-14
      • 1970-01-01
      相关资源
      最近更新 更多