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

标签 javascript ruby-on-rails ajax json

我正在阅读 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 对象或两者兼而有之?

最佳答案

没有正确或错误的方法。在您引用的示例中,ajax 调用将接收 JavaScript,然后在浏览器中执行该 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>

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

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

关于javascript 代码或 json 对象作为 ajax 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23254712/

相关文章:

javascript - 播放期间跳过部分YouTube视频

javascript - 是否可以使用 JavaScript 计算 SVG 图像的色彩平衡?

ruby-on-rails - rails : What is the convention for controllers with many words

jquery - Sys.ArgumentTypeException : Object of type 'Sys._Application' cannot be converted to type 'Sys._Application' . 参数名称:实例

jquery - 部分 View 重定向而不是填充 div

javascript - 以 Express 方式将主干集合保存到 MongoDB

javascript - AngularJS orderby 整数字段无法正常工作

javascript - 粒子碰撞矢量反射问题

javascript - 在 rails 上使用react :Iterating through an array of activerecord

ruby-on-rails - 通过 Windows 7 上的 Cygwin 让 Rsync 3.0.9 在 Vagrant VM box 上工作