2012-05-12 38 views
2

我正在研究一個大量使用XHR的項目,並且需要將一些數據附加到每個ajax請求以便服務器端正確保持跟蹤瀏覽器中發生了什麼。ajaxSetup不能使用Rails/jquery-ujs

我有一個稱爲xhr_response_handler的泛型類,比我用來處理所有添加到所有表單,鏈接等的Ajax請求的回調。 (即,其中「:遠程=>真」在導軌)

$('.xhr_response_handler') 
    .on('ajax:success', function(event, data, status, xhr) { xhr_success(data); }) 
    .on('ajax:failure', function(xhr, status, error) { xhr_fail(error); }); 

然後我嘗試使用追加與每個請求一起發送的默認數據:

$.ajaxSetup({ 
    data: { 
     Foo: <%= @Bar %> 
    } 
}); 

這適用於一些元件的其中ajax設置是直接用jquery配置的,但是這對於使用rails方法創建的某些元素(如link_to和form_for:remote => true)不起作用。

奇怪的是,如果我還加

$('.xhr_response_handler').data('params', { Foo2: <%= @Bar2 %> }); 

那麼這適用於將數據添加到鐵軌產生的link_to使用Ajax請求。奇怪的是,現在突然間ajaxSettings也可以工作,並且在ajax請求中,我將Foo和Foo2作爲參數。但是當我自己使用ajaxSettings的時候,我根本沒有任何參數。

此外,沒有任何要附加的數據被序列化爲從form_for方法生成的ajax請求中發送的表單數據。

任何幫助,將不勝感激。

的Rails 3.2.3

紅寶石1.9.3p194

的jQuery 1.7.2

+0

你有沒有找到這個解決方案? –

回答

0

我認爲出現這種情況的原因的$.ajaxSetup的數據散列由AJAX調用重寫你做以後。數據必須手動合併。