2010-09-17 51 views
1

我看到一些奇怪的行爲與我的Rails3應用程序。請注意,我用的rails.jsRails3 ajax回調已空xhr

jQuery的版本從rails.js開始行:49

error: function (xhr, status, error) { 
    el.trigger('ajax:failure', [xhr, status, error]); 
    alert('error in: ' + xhr.responseText); 
} 

從我的jQuery代碼的形式後執行。

.bind('ajax:failure', function(xhr, status, error) { 
    alert('error in: ' + xhr.responseText); 
}) 

在rails.js警報顯示預期收益文本,但警告我的回調錶明:

error in: undefined 

所以不會出現XHR被正確發送到回調。我做錯了什麼,或者這是rails.js的問題?

進一步測試表明,這適用於ajax:failureajax:success回調。使用ajax:success回撥,服務器回覆爲status,所以我沒有注意到該行爲。

回答

0

從jQuery文檔上.trigger()

「的事件對象總是以 傳遞的第一個參數的事件處理程序 ,但如果一個.trigger期間指定附加參數 ()調用 因爲他們在這裏,所以這些參數 將被傳遞給處理程序,好像是 。「

他們給出的例子是:

$('#foo').bind('custom', function(event, param1, param2) { alert(param1 + "\n" + param2); }); $('#foo').trigger('custom', ['Custom', 'Event']);

所以我更新: .bind('ajax:failure', function(xhr, status, error)

到: .bind('ajax:failure', function(event, xhr, status, error)

而且現在工作的罰款。很明顯我的錯誤