最近学习 ajax,遇到一个很奇怪的问题,因为浏览器明明已经接收到返回的 js 了,但是 js.erb 内的 js 代码都没有被执行:
事情是这样的:原本我的页面在 index 动作下,现在想往 search 动作发一个 post 请求,使 index 页面无需刷新就更新从 search 动作获得的数据
#rooms_controller
def search
if params[:key]
respond_to do |f|
f.js
end
end
end
#search.js.erb
alert("hello");
服务器端显示无异常:
Started POST "/rooms/search" for 127.0.0.1 at 2017-03-05 09:46:05 +0800
Processing by RoomsController#search as JS
Parameters: {"key"=>"星期一 J3"}
Room Load (1.4ms) SELECT "rooms".* FROM "rooms"
Rendering rooms/search.js.erb
Rendered rooms/_results.html.erb (1.7ms)
Rendered rooms/_details.html.erb (6.4ms)
Rendered rooms/search.js.erb (12.0ms)
Completed 200 OK in 31ms (Views: 14.1ms | ActiveRecord: 1.4ms)
浏览器返回值:
search POST 200 xhr jquery.self-bd7ddd393353a8d2480a622e80342adf488fb6006d667e8b42e4c0073393abee.js?body=1:10255 9.5 KB 44 ms
仔细查看请求的 response 也的确返回了响应的 jsalert("hello")
,为什么没有执行呢?同时我也发现写在 assets/javascripts/room.js 内的 jquery 选择器失效,不知道是不是有点关系....
求大神指点