example jQuery Ajax-Fehlerfunktion




jquery ajax timeout (6)

Hier ist, wie Sie den ASP-Fehler herausziehen.

              cache: false,
              url: "addInterview_Code.asp",
              type: "POST",
              datatype: "text",
              data: strData,
              success: function (html) {
                  alert('successful : ' + html);
                  $("#result").html("Successful");
              },
              error: function (jqXHR, textStatus, errorThrown) {
                  if (jqXHR.status == 500) {
                      alert('Internal error: ' + jqXHR.responseText);
                  } else {
                      alert('Unexpected error.');
                  }
              }

Ich habe einen Ajax-Aufruf, der Daten an eine Seite weiterleitet, die dann einen Wert zurückgibt.

Ich habe den erfolgreichen Anruf von der Seite abgerufen, aber ich habe es so codiert, dass es einen Fehler in der asp verursacht. Wie kann ich diesen Fehler von der Jquery abrufen?

Beispielsweise:

cache: false,
url: "addInterview_Code.asp",
type: "POST",
datatype: "text",
data: strData,
success: function (html) {
    alert('successful : ' + html);
    $("#result").html("Successful");
},
error: function (error) {
    **alert('error; ' + eval(error));**
}

Es ist das Fehlerbit, das ich nicht verstehe. In der Funktion welchen Parameter muss ich setzen, damit ich dann die Fehlermeldung verwenden kann, die ich im Server ausgelöst habe.


Versuche dies:

error: function(jqXHR, textStatus, errorThrown) {
  console.log(textStatus, errorThrown);
}

Wenn Sie Ihr Frontend über einen Validierungsfehler informieren möchten, versuchen Sie, json zurückzugeben:

dataType: 'json',
success: function(data, textStatus, jqXHR) {
   console.log(data.error);
}

Ihr Asp-Skript sollte zurückkehren:

{"error": true}


Von jquery.com:

The jqXHR.success(), jqXHR.error(), and jqXHR.complete()
callback methods introduced injQuery 1.5 are deprecated
as of jQuery 1.8. To prepare your code for their eventual 
removal, use jqXHR.done(), jqXHR.fail(), and jqXHR.always() instead.

Wenn Sie globale Handler möchten, können Sie Folgendes verwenden:

.ajaxStart(), .ajaxStop(),
.ajaxComplete(), .ajaxError(),
.ajaxSuccess(), .ajaxSend()

Die erforderlichen Parameter in einer Ajax- error sind jqXHR, exception und Sie können sie wie jqXHR, exception verwenden:

$.ajax({
    url: 'some_unknown_page.html',
    success: function (response) {
        $('#post').html(response.responseText);
    },
    error: function (jqXHR, exception) {
        var msg = '';
        if (jqXHR.status === 0) {
            msg = 'Not connect.\n Verify Network.';
        } else if (jqXHR.status == 404) {
            msg = 'Requested page not found. [404]';
        } else if (jqXHR.status == 500) {
            msg = 'Internal Server Error [500].';
        } else if (exception === 'parsererror') {
            msg = 'Requested JSON parse failed.';
        } else if (exception === 'timeout') {
            msg = 'Time out error.';
        } else if (exception === 'abort') {
            msg = 'Ajax request aborted.';
        } else {
            msg = 'Uncaught Error.\n' + jqXHR.responseText;
        }
        $('#post').html(msg);
    },
});

DEMO-FIDDLE

Parameter

jqXHR:

Es ist eigentlich ein Fehler-Objekt, das so aussieht

Sie können dies auch in Ihrer eigenen Browserkonsole console.log , indem console.log in der error console.log :

error: function (jqXHR, exception) {
    console.log(jqXHR);
    // Your error handling logic here..
}

Wir verwenden die Eigenschaft status von diesem Objekt, um den Fehlercode zu erhalten. Wenn wir zum Beispiel status = 404 erhalten, bedeutet dies, dass die angeforderte Seite nicht gefunden wurde. Es existiert überhaupt nicht. Basierend auf diesem Statuscode können wir Benutzer auf die Anmeldeseite umleiten oder was auch immer unsere Geschäftslogik benötigt.

Ausnahme:

Dies ist eine String-Variable, die den Ausnahmetyp anzeigt. Also, wenn wir 404-Fehler bekommen, wäre exception einfach "Fehler". In ähnlicher Weise könnten wir 'Timeout', 'Abbruch' als andere Ausnahmetexte erhalten.

Hinweis zur jqXHR.success() : Die jqXHR.success() , jqXHR.error() und jqXHR.complete() sind ab jQuery 1.8 veraltet. Verwenden Sie jqXHR.done() , jqXHR.fail() und jqXHR.always() um den Code für das Entfernen vorzubereiten.

Wenn Sie also jQuery 1.8 oder höher verwenden, müssen wir die Logik der Erfolgs- und Fehlerfunktion wie folgt aktualisieren:

// Assign handlers immediately after making the request,
// and remember the jqXHR object for this request
var jqxhr = $.ajax("some_unknown_page.html")
    .done(function (response) {
        // success logic here
        $('#post').html(response.responseText);
    })
    .fail(function (jqXHR, exception) {
        // Our error logic here
        var msg = '';
        if (jqXHR.status === 0) {
            msg = 'Not connect.\n Verify Network.';
        } else if (jqXHR.status == 404) {
            msg = 'Requested page not found. [404]';
        } else if (jqXHR.status == 500) {
            msg = 'Internal Server Error [500].';
        } else if (exception === 'parsererror') {
            msg = 'Requested JSON parse failed.';
        } else if (exception === 'timeout') {
            msg = 'Time out error.';
        } else if (exception === 'abort') {
            msg = 'Ajax request aborted.';
        } else {
            msg = 'Uncaught Error.\n' + jqXHR.responseText;
        }
        $('#post').html(msg);
    })
    .always(function () {
        alert("complete");
    });

Ich hoffe es hilft!


          cache: false,
          url: "addInterview_Code.asp",
          type: "POST",
          datatype: "text",
          data: strData,
          success: function (html) {
              alert('successful : ' + html);
              $("#result").html("Successful");
          },
          error: function(data, errorThrown)
          {
              alert('request failed :'+errorThrown);
          }




ajax