我正在阅读 Rails 指南,特别是我正在阅读以下内容:http://guides.rubyonrails.org/working_with_javascript_in_rails.html#server-side-concerns让我有点困惑的部分是回应。它表示,如果创建操作收到 AJAX 请求,那么它将返回将用户插入页面的 javascript 代码。我找到了其他解决方案,其中客户端接收 json 对象(而不是 javascript 代码)并构建相应的 DOM 元素并将它们插入页面中。我的问题是:
- 接收 json 对象并构建 DOM 元素并将它们插入到页面上比接收 javascript 代码并执行它以便将新内容添加到页面更好吗?对此有哪些最佳实践?
- 在此示例中,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/