看了官方文档和网上的资料,尝试写个 ujs 的例子,大致流程是这样: 用户点击按钮 -> 发送 post 请求给后端 -> 后端返回 js 模板 -> 前端执行 js 模板
但是在发送 ajax 请求的时候,似乎没有起作用,浏览器的调试器中找不到任何 post 请求,网页也没有任何变化,不知道是为什么。 跟踪 javascript 发现确实执行了 ajax,但是为什么随后就没音儿了呢?
这是分离的 CoffeeScript:
$ ->
$(".my-test").click ->
console.log("This is a test from coffeescript")
$.ajax
type: "POST"
url: "queries/select"
dataType: "js"
data:
message: "I am a message"
error: (jqXHR, textStatus, errorThrown) ->
console.log("AJAX Error: #{textStatus}")
success: (data, textStatus, jqXHR) ->
console.log("Successful AJAX call: #{data}")
已经指定了路由:
queries_select POST /queries/select(.:format) queries#select_house
在 QueriesController 中对应的 response:
def select_house
respond_to do |format|
format.js
end
end
这是待返回的 js.erb 模板:(就一句)
console.log("Javascript template is here");
就算不用 UJS 而改成 JSON Ajax(指定 Ajax 的 dataType 为 JSON,在 respond_to 里添加 json 类型)依然没有任何效果。 不知道问题出在了哪里哇