2014-10-23 3 views
0

я читал онлайн документ, который описывает свойства обратного вызова Ajax.BeginForm, следующим образом: -Ajax.BeginForm обратного вызова свойства, не могут понять различия

  • OnBegin (в jquert это beforeSend): - Вызывается сразу до отправляемого запроса
  • OnComplete (в JQuery он является полным): - Вызывается, если запрос успешно
  • OnFailure (в JQuery это ошибка): - Вызывается, если запрос не
  • OnSuccess (в JQuery это успех): - Вызывается, когда запрос завершен, irres pective ли запрос успешно или не

теперь я не могу понять, что подразумевается под «Called когда запрос завершен, независимо от того, удалось ли запрос или не». давайте принимать следующие примеры: -

  • теперь, если я возвращаю HTTP 401 ошибка из моего приложения, который один сценарий будет называться, я считать OnFailure, или с тех пор я возвращаю результате OnSuccess будет? вместо этого?

  • , и если исключение ООН-handeled было поднято, то я предполагаю, что OnFailure будет вызван, но также будет огонь OnComplete?

Благодаря Благодаря

+0

Подумайте об этом как «наконец». Лучший способ проверить это - реализовать все обратные вызовы. –

+0

Мне не нравится испытывать что-то, если у меня не будет минимального понимания различий ... –

+0

Жизнь может стать довольно скучной в этом случае ... –

ответ

1

Там всегда будет последовательность из 3-х обратных вызовов, предполагая, что сервер отправляет ответ обратно (404, 500, 200, 302 и т.д.). Обратный вызов OnBegin является первым вызовом. Затем запрос отправляется и сервер отправляет подтверждение. Если запрос был успешным, вызывается OnSuccess; если нет, вызывается OnFailure. После завершения одного из OnSuccess или OnFailure будет вызываться обратный вызов OnComplete.

Вы можете «визуализировать» это следующим образом:

  |--success -> OnSuccess() -->| 
OnBegin-->        >--> OnComplete 
      |--error -> OnFailure() -->| 

------------time line--------------------------> 

Конечно, статус успеха/ошибки необходимо, чтобы вернуться к клиенту первым.

+0

но отправка 404 http ошибка будет считаться OnSuccess OnFailure ?, так как сервер возвращает ответ? или OnSuccess будет срабатывать только при возврате HTTP 200? может юо adivce? –

+1

404 будет считаться _failure_. Эти обратные вызовы предполагают, что сервер был достигнут, и что он отправил ответ обратно в браузер. Я думаю, что все в кодах 2xx и 3xx будет считаться успешным и сбой 4xx и 5xx. В зависимости от обстоятельств. Конечно, отправка перенаправления (301 или 302) в запрос AJAX не всегда имеет смысл. –

1

Это означает, что данная функция будет вызываться, когда запрос закончен. По какой-либо причине ваш запрос может быть успешным или неудачным, но данная функция будет выполнена независимо от того, был ли запрос успешным или неудачным.

Пример: Вы определяете функцию, назовем ее обратным вызовом.

Дело1: вы отправляете запрос, он успешно достигает сервера и после ответа обратный вызов выполняется.

Case2: Вы отправляете запрос, который не увенчался успехом, например, цель не существует. обратный вызов будет выполнен и в этом случае.

enter image description here

+0

как я понимаю эти параметры, которые являются одним из доступных CAllBACKS, а не точкой принятия решений? вы можете объяснить свою фотографию, пожалуйста? –

+1

Вне курса. У вас есть обратный вызов и для успеха, который выполняется после запроса тогда и только тогда, когда он был успешным. С другой стороны, это «Вызывается, когда запрос завершен, независимо от того, был ли запрос успешным или неудачным», я считаю верным. Обратный вызов успеха выполняется тогда и только тогда, когда запрос был успешным, отказ callback выполняется тогда и только тогда, когда запрос не выполнен. В цитате говорилось о завершенном обратном вызове. Запрос будет выполнен независимо от того, был ли запрос успешным. Моя блок-схема иллюстрирует полную логику обратного вызова. –

+0

так что имеется в виду, если запрос будет успешным? отправляет http 404 считается успешным ответом, потому что сервер отвечает? или Onsuccess будет срабатывать только в том случае, если сервер вернет HTTP 200? –

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

  • Нет связанных вопросов^_^