2011-05-16 46 views
0

我一直在搜尋不同的資源來解決這個問題,但我似乎無法弄清楚問題可能是什麼。來自form_for remote的響應不被執行

我想要做一個jQuery表單處理與jQuery。

我application.html.erb包含以下行

<%= javascript_include_tag "http://code.jquery.com/jquery-1.6.1.js"%> 
    <%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.min.js" %> 
    <%= javascript_include_tag "jquery.rails.js" %> 

jquery.rails.js包含從https://github.com/rails/jquery-ujs`

最新我有典型的form_for電話:<%=form_for @data, :remote => true do |f| %> 從而啓動創建我的控制器的處理器,因爲這是一個阿賈克斯呼籲,我有適當的create.js.erb其中包含jquery這樣的$("#data_table").html("something")

整個過程幾乎是正確的:ajax調用是正確的,當我查看瀏覽器開發工具時,我發現它返回了包含$("#data_table").html("something")的正確XHR資源,但它返回的內容未被瀏覽器評估。

我試着調試過不同的腳本,但是我找不到任何有意義的東西,但是我可以看到數據返回正在由我的rails.jquery.jsjquery.js腳本處理。

我發現不同的信息,並嘗試所有這些都沒有成功。這應該是相當微不足道的,但我無法弄清楚。

回答

1

我得到它的工作,但我很難想象這是做這件事的正確方法,但經過數小時的試驗和錯誤(甚至閱讀jquery.js代碼),這是唯一一個結束了工作。我仍然希望得到更好的答案。

我已經添加了一個綁定到表單以執行ajax:complete事件。 所以我的頁面包含下面的JavaScript現在:Ajax調用完成

$(document).ready(
    function(){ 
     $('#form_id').bind('ajax:complete',function(evt,xhr,status){ 
      eval(xhr.responseText); 
     }); 
) 

所以,現在時,將評估xhr.responseText。

+0

從jQuery 1.8開始,只應將.ajaxComlpete()方法附加到文檔。 – Ziggy 2014-01-14 15:04:21

0

此問題的答案可能是在這裏 Rails 3 ajax response is not executed

關鍵對我來說是通過增加

layout false 

到控制器禁用佈局。如果沒有這個Ajax響應也包含我在/ views/layouts/application中的所有內容