2014-02-07 40 views
1

我開發了一個小型的演示應用程序來測試一些接口API與Facebook和Twitter等社交媒體。Rails - Turbolinks與Ajax Json的響應

我有一個「問題」,當我在視圖中執行一個Ajax-json調用時,turbolinks gem激活。有時(是的,有時候!)它在視圖中呈現JSON響應(如.json)而不是右頁(html)。如果我禁用了turbolinks寶石,問題不再出現。

任何人都有一個想法,爲什麼發生這種情況?我該怎麼做才能避免這個問題,即使是turbolinks寶石?

如果你需要一些代碼,以便更好地瞭解它,你可以找到在支持(有時)的錯誤這裏的呼叫(檢查Ajax調用):鏈接

回答

1

的問題將是Turbolinks將刷新通過Ajax的大部分時間,這意味着典型的JavaScript DOM加載頁面的過程中不會發生


代表團

這聽起來我就像你束縛你的Ajax過程中一個特定的元素,像這樣:

$("element").on("click", function() { 
    $.ajax({.... 

    ...}); 
}); 

解決這個問題的方法是使用javascript delegation綁定元素的文檔,並委派給需要

展望元素在你的代碼,我應該這樣做:

$(document).on("submit", "form", function(){ 
    // .... your ajax code 
}); 

我也能保證您使用unobtrusive javascript(把它放在它自己的JS文件,而不是你的觀點)。如果您給了我們更多的背景知識,我可以爲您制定更多量身定製的解決方案

+0

謝謝@Rich爲您提供完整的答案。我會試試看。你有一個想法,爲什麼這種情況只發生在有時?有些請求是以正確的方式處理別人的,但「方法」永遠是相同的。 – damoiser

+0

沒問題!不確定具體細節,但代表團的東西是使用Turbolinks的Rails應用程序的常見問題! –

+0

再次感謝您的支持!我嘗試了你的建議和工作!好工作:) – damoiser