2010-09-17 2 views
1

Я вижу странное поведение с моим приложением Rails3. Обратите внимание, что я использую версию JQuery из rails.jsRails3 ajax callback имеет пустой xhr

От 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: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)

И теперь он работает нормально. Очевидно, моя ошибка