我有一张通过ajax提交的表单。如果表单成功提交,页面将重定向到其他位置。如果表单失败,我将使用partials(.js.erb)和内联错误重新呈现表单。
这很好。
我遇到的问题是我想在页面重新呈现时将某种类型的json响应/数据发送回application.js。只是,我不确定这是否可行。
//的application.js
$(document).on('click','#sumbit_div',function(e) {
$.ajax({
url: '/create',
type: 'post',
dataType: 'script',
data: $('#the_form').serialize(),
cache: false,
success: function(xhr,data) {
console.log('success');
},
error: function(data) {
console.log('error')
console.log(data.value_from_format_json);
},
});
});
//在控制器中创建动作。
rescue ActiveRecord::RecordInvalid => e
respond_to do |format|
format.json {render :json => { :status => 403,:success => false }}
format.js
end
我认识到即使失败的提交也是.ajax响应的成功。我可以处理后如何处理。现在我只想知道我是否可以完成后续工作。
最后一点是这是在rails 2.3上(仍处于升级过程中)。但我已经将所有jquery库(rails.js / jquery.js / etc)更新为与ujs一起使用。
感谢
答案 0 :(得分:2)
您不应该将数据发送到application.js,而应该从您的DOM中获取application.js pull 。让你的create.js.erb修改DOM,以便application.js捕获它。
或者甚至更好,从你的create.js.erb调用你想要的函数传递你想要的参数。
答案 1 :(得分:0)
我想你需要将你的dataType改为json以获得js响应的“json”响应或“js”。