2

我有一个通过 ajax 提交的表单。如果表单成功提交,页面将重定向到别处。如果表单失败,我会使用部分 (.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。

谢谢

4

2 回答 2

2

你不应该向 application.js发送数据,而应该让 application.js从你的 DOM 中拉取数据。让您的 create.js.erb 修改 DOM,以便 application.js 捕获它。

或者更好的是,从你的 create.js.erb 调用你想要的函数,传递你想要的参数。

于 2013-02-03T21:25:17.857 回答
1

我想您需要将 dataType 更改为 json 以获得“json”响应或“js”以获得 js 响应。

于 2013-02-03T21:26:10.217 回答