Javascript Rails remote呈现一页json,JS ajax处理程序不会';抓不到
我想远程发布一个表单,然后返回一些JSON,我的JS知道如何处理。代码:Javascript Rails remote呈现一页json,JS ajax处理程序不会';抓不到,javascript,ruby-on-rails,ruby,ajax,Javascript,Ruby On Rails,Ruby,Ajax,我想远程发布一个表单,然后返回一些JSON,我的JS知道如何处理。代码: <%= form_tag '/admin/order_lookup', remote: true, authenticity_token: true, id: "order-lookup-submit" do -%> <%= text_field_tag 'contact_string' %> <%= submit_tag 'Submit' %> <% end -%>
<%= form_tag '/admin/order_lookup', remote: true, authenticity_token: true, id: "order-lookup-submit" do -%>
<%= text_field_tag 'contact_string' %>
<%= submit_tag 'Submit' %>
<% end -%>
$("#order-lookup-submit").on("ajax:success", function(e, data, status, xhr) {
alert("in success")
})
def order_lookup
# some code
render json: @result
end
像所有可能的方式一样,我不断得到ActionController:未知信息。也没有根据常规逻辑成功调试。请尝试将表单标记更改为以下内容:
form_tag '/admin/order_lookup.json', remote: true, authenticity_token: true, id: "order-lookup-submit"
注意位置上附加的json
我创建了一个演示应用程序来说明这一点
testing.js
$(document).ready(function(){
$("#order-lookup-submit").on("ajax:success",function(event){
alert("success");
}).on("ajax:error",function(event,x,y){
alert("error");
});
});
order_lookup.html.haml
= form_tag '/admin/order_lookup.json', remote: true, authenticity_token: true, id: "order-lookup-submit" do
= hidden_field_tag "testing", "testing"
= submit_tag "submit"
控制器
class TestingController < ApplicationController
def order_lookup
return render json: {hi: "hi"}
end
end
您是否尝试将respond_设置为with.json
format.json {render json: @result.to_json}
同样的事情发生了James-更新了答案-应该可以使用.jsonJames-当您提交表单时,页面本身是否发布并显示了JSON?是的,就像literaly一样,它是JSON响应的一个页面。我可以通过从javascript清单中删除//=require jquery_ujs来复制您的问题。您的资产管道中是否有必要的依赖项来进行异步表单请求?
Rails.application.routes.draw do
root "testing#index"
post "admin/order_lookup" => "testing#order_lookup"
end
format.json {render json: @result.to_json}