在前端javascript上处理对Rails控制器的AJAX POST调用的应答
首先,我在前端对rails控制器进行AJAX POST调用:在前端javascript上处理对Rails控制器的AJAX POST调用的应答,javascript,jquery,ruby-on-rails,ajax,post,Javascript,Jquery,Ruby On Rails,Ajax,Post,首先,我在前端对rails控制器进行AJAX POST调用: var request=$.ajax({ url: url_up, type: "POST", beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))}, data: {q_param: { title: title
var request=$.ajax({
url: url_up,
type: "POST",
beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
data: {q_param: {
title: title,
total: total,
list: list,
client: idclient,
tax_rate: tax_rate
}},
success: function(data, textStatus, jqXHR) {
quote_id=data;
return false;
},
dataType: "json"
});
这个调用运行良好,我可以在控制器端看到它。控制器呈现json应答:
def create
@client=Client.find_by_id(params['q_param']['client'])
@quote = @client.quotes.create(quote_p)
render json: {:quote_id=>@quote.id}
end
执行此操作时,我希望quote_id变量具有@quote.id。但它不。。。
你能告诉我怎么了吗?
感谢最后,我检测到AJAX调用的success方法中的数据变量正在获取json对象,而不是执行以下操作:
quote_id=data;
我决定调用一个函数
goShow(data.quote_id);
我可以得到好的报价id。
我不明白为什么另一种方法不起作用。。。
感谢Misha的帮助调试。问题在于验证失败,您的报价没有保存。检查
@quote.errors
以查看问题所在。我没有看到任何错误,因为该quote在数据库中存储良好。顺便提一下,这个命令给了我=>#再看看你的问题,我认为问题在于:你在做quote\u id=data
,但是data
将包含整个JSON。要获得quote\u id
,您必须执行quote\u id=data.quote\u id
。我同意,但问题是quote\u id最后没有定义:它甚至不是一个对象。所以我猜问题在ajax答案的其他地方。谢谢你的帮助顺便说一下,我试过了,但没用。它没有定义。。。谢谢