2011-05-05 5 views
1

Почему у меня всегда так много проблем ...? учитывая, что я не решить эту проблему в моем other article, я решил просто закодировать JavaScript прямо в значение ... так у меня есть:Обратные обратные вызовы на Ajax.BeginForm не работают правильно

OnSuccess="alert('ok')", 
OnFailure="alert('failed')", 

поэтому моя проблема заключается в представлении работает отлично; запись вставляется в базу данных, и я получаю обратный вызов ... но я получаю неправильный обратный вызов! Я получаю сбой, даже если запись была вставлена. heeeeelp!

ответ

0

ок, я понял несколько вещей:

  1. OnFailure = «HandleError» правильный способ сделать это (см другую статью, я упоминал для разрешения)
  2. AjaxContext не было get_response(), потому что вместо этого я фактически подключил функцию к событию OnComplete (мой плохой)! после подключения к OnSuccess, я получаю свой метод контроллера Json возвращает значение изначально
  3. Я получал обработчик OnSuccess, когда произошла сбой базы данных. это потому, что мой метод контроллера был try {} catch {} ing и поэтому никогда не сработал! я, будучи вялым :(
2

Вы должны быть в состоянии считывать данные из ответа, чтобы выяснить, почему это считается отказ:

OnFailure="handleError", 

...

function handleError(ajaxContext) { 
    var response = ajaxContext.get_response(); 
    var statusCode = response.get_statusCode(); 
    alert("Sorry, the request failed with status code " + statusCode); 
} 

В качестве альтернативы, используйте Fiddler и посмотреть на реакцию. Убедитесь, что код состояния, тип содержимого и контент - все, как ожидалось.

+0

1. Я не понимаю, почему OnFailure вызова функции, в отличие от имени функции ... Я думал, что это должно было быть OnFailure = «HandleError»? 2. ajaxContent Безразлично Кажется, что он содержит метод get_response() ... он содержит responseText, который представляет собой строковое представление объекта, возвращаемого моим методом контроллера (и который я не могу разыменовать), а также содержит сбой, завершение, завершение, успех и ошибка, все из которых являются методами, которые возвращают сам объект ... Я использую самую последнюю версию библиотеки jquery.unobtrusive-ajax.min.js прямо из Microsoft CDN, так что может быть проблемой? – ekkis

+0

My bad , Я копирую/вставляю. Исправлено - должно быть имя функции (я считаю). Проверьте код содержимого/содержимого/статус/код с Fiddler, чтобы убедиться, что все выглядит правильно кт. –

Смежные вопросы