我有一個表單提交通過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響應中的成功。我可以處理如何處理後。現在我只想知道我是否能夠完成即時消息。
最後一點是這是在軌道2.3(仍在升級過程中)。但我有所有jquery庫(rails.js/jquery.js/etc)更新與ujs一起使用。
感謝
你基本上說不用json嗎?在控制器@var =「要發送的東西」中,然後在.js.erb中的函數中定義它,並在application.js中調用該函數?我的錯誤是 – user1004277
。向後讀,從js.erb調用ap.js中的函數。但使用該方法,我如何發送來自js.erb的數據在application.js中被拾取?一些函數(一些,參數,傳遞)? – user1004277
愚蠢的例子,但你會得到它: 如果application.js定義了一個名爲'logRabbits()'的函數,你可以在你的create.js.erb:logRabbits('<%= @ rabbits.count%>') – mathieugagne