javascript代码还是json对象作为ajax响应?

javascript代码还是json对象作为ajax响应?,javascript,ruby-on-rails,ajax,json,Javascript,Ruby On Rails,Ajax,Json,我正在阅读Rails指南,尤其是我在读这篇文章:让我有点困惑的是反应。它表示,如果create操作接收到AJAX请求,那么它将返回将在页面中插入用户的javascript代码。我还发现了其他解决方案,其中客户端接收一个json对象(而不是javascript代码),构建相应的DOM元素并将它们插入页面中。我的问题是: 接收json对象并构建DOM元素并将其插入页面是否比接收javascript代码并执行以便向页面添加新内容更好?关于它的最佳实践是什么 在本例中,ajax调用将接收什么?javas

我正在阅读Rails指南,尤其是我在读这篇文章:让我有点困惑的是反应。它表示,如果create操作接收到AJAX请求,那么它将返回将在页面中插入用户的javascript代码。我还发现了其他解决方案,其中客户端接收一个json对象(而不是javascript代码),构建相应的DOM元素并将它们插入页面中。我的问题是:

  • 接收json对象并构建DOM元素并将其插入页面是否比接收javascript代码并执行以便向页面添加新内容更好?关于它的最佳实践是什么
  • 在本例中,ajax调用将接收什么?javascript代码、json对象或两者

  • 没有对错之路。在您引用的示例中,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>
    
    控制器:
    def创建
    @user=user.new(:user_参数)
    @user.save
    回应待办事项|格式|
    format.js()
    结束
    结束
    视图:create.js
    $(“#用户列表”)。附加(“”)
    部分:_user_row.html.erb
    
    partial将自动访问create controller方法中的变量。如果要插入的html很大或很复杂,这可以大大简化代码并使其更具可读性

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