Rails3 ajax callback имеет пустой xhr - PullRequest
1 голос
/ 18 сентября 2010

Я вижу странное поведение с моим приложением Rails3.Обратите внимание, что я использую jQuery-версию rails.js

С 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:failure, так и ajax:success.При обратном вызове ajax:success ответ сервера находится в status, поэтому я не заметил такого поведения.

1 Ответ

0 голосов
/ 19 сентября 2010

Из документов 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)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...