Подтвердить что ты не робот

ASP.NET MVC3 AJAX.BeginForm AjaxOptions OnSuccess OnFailure Problem

Мой вопрос заключается в том, что условие вызова обратного вызова OnFailure должно быть вызвано, как среда выполнения знает, что вызов ajax не работает (помощник ajax использует некоторый код статуса ответа HTTP, чтобы указать это? что это было бы тогда?). И если html UpdateTargetId обновляется независимо от того, что вызов ajax не удался или был успешным, тогда как я должен правильно обрабатывать ошибку. Очень смутно...

4b9b3361

Ответ 1

 <script type="text/javascript">
        function OnSuccess() {
            alert('Success');
        }
        function OnFailure(ajaxContext) {
            var response = ajaxContext.get_response();
            var statusCode = response.get_statusCode();
            alert('Failure');
            Here you can do whatever you want with the div.
            $('#targetDiv').empty();
        }
    </script>
    <div id="targetDiv">
    @using (Ajax.BeginForm("Index", "Home", 
      new AjaxOptions 
           { 
             UpdateTargetId = "targetDiv",
             OnSuccess ="OnSuccess",
             OnFailure ="OnFailure" 
           })
      {
        ... 
      }
  </div>

Ответ 2

Кажется, что в ASP.NET MVC 4 ситуация немного изменилась. Мне нужно было использовать следующие свойства, чтобы прочитать ответ и статус:

ajaxContext.responseJSON
ajaxContext.responseText
ajaxContext.status
ajaxContext.statusText

Ответ 3

Согласно официальному веб-сайту MSDN: Эта функция вызывается, если статус ответа не находится в диапазоне 200.

Свойство AjaxOptions.OnFailure

Ответ 4

OnFailure в AjaxOptions ищет функцию JavaScript

<script>
    function onError(ajaxContext) {
        var response = ajaxContext.get_response();
        var statusCode = response.get_statusCode();
        alert("Error occured. Status code = " + statusCode);
    }
</script>

В HTML напишите это, чтобы получить предупреждение при возникновении ошибки.

<div id="updateDiv">
@using (Ajax.BeginForm(new AjaxOptions { HttpMethod = "Post", InsertionMode = InsertionMode.Replace, UpdateTargetId = "updateDiv", OnFailure = "onError" })) 
{ 
  @*Your HTML form code goes here.*@
}
</div>