809 Stimmen

jQuery Ajax-Fehlerbehandlung, Anzeige benutzerdefinierter Ausnahmemeldungen

Gibt es eine Möglichkeit, die ich benutzerdefinierte Ausnahmemeldungen als eine Warnung in meinem jQuery AJAX-Fehlermeldung anzeigen kann?

Wenn ich zum Beispiel eine Ausnahme auf der Serverseite auslösen möchte, und zwar über Streben por throw new ApplicationException("User name already exists"); Ich möchte diese Meldung ("Benutzername existiert bereits") in der jQuery AJAX-Fehlermeldung abfangen.

jQuery("#save").click(function () {
  if (jQuery('#form').jVal()) {
    jQuery.ajax({
      type: "POST",
      url: "saveuser.do",
      dataType: "html",
      data: "userId=" + encodeURIComponent(trim(document.forms[0].userId.value)),
      success: function (response) {
        jQuery("#usergrid").trigger("reloadGrid");
        clear();
        alert("Details saved successfully!!!");
      },
      error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.status);
        alert(thrownError);
      }
    });
  }
});

Bei der zweiten Meldung im Fehler-Callback, bei der ich eine Meldung thrownError erhalte ich undefined y el xhr.status Code ist 500 .

Ich bin mir nicht sicher, was ich falsch mache. Was kann ich tun, um dieses Problem zu beheben?

4voto

ibrahim ozboluk Punkte 431
$("#save").click(function(){
    $("#save").ajaxError(function(event,xhr,settings,error){
        $(this).html{'error: ' (xhr ?xhr.status : '')+ ' ' + (error ? error:'unknown') + 'page: '+settings.url);
    });
});

3voto

Saket Kumar Punkte 3583

Obwohl diese Frage seit vielen Jahren nicht mehr gestellt wird, finde ich immer noch nicht xhr.responseText als die Antwort, nach der ich gesucht habe. Sie gab mir eine Zeichenfolge im folgenden Format zurück:

"{"error":true,"message":"The user name or password is incorrect"}"

die ich den Nutzern auf keinen Fall zeigen möchte. Was ich gesucht habe, ist etwas wie unten:

alert(xhr.responseJSON.message);

xhr.responseJSON.message gibt mir die genaue Nachricht aus dem Json-Objekt, die den Benutzern angezeigt werden kann.

3voto

Steffan Punkte 1

Auslösen einer neuen Ausnahme auf dem Server mit:

Response.StatusCode = 500

Response.StatusDescription = ex.Message()

Ich glaube, dass die StatusDescription an den Ajax-Aufruf zurückgegeben wird...

Exemple :

        Try

            Dim file As String = Request.QueryString("file")

            If String.IsNullOrEmpty(file) Then Throw New Exception("File does not exist")

            Dim sTmpFolder As String = "Temp\" & Session.SessionID.ToString()

            sTmpFolder = IO.Path.Combine(Request.PhysicalApplicationPath(), sTmpFolder)

            file = IO.Path.Combine(sTmpFolder, file)

            If IO.File.Exists(file) Then

                IO.File.Delete(file)

            End If

        Catch ex As Exception

            Response.StatusCode = 500

            Response.StatusDescription = ex.Message()

        End Try

1voto

Monzur Punkte 1204
$("#fmlogin").submit(function(){
   $("#fmlogin").ajaxError(function(event,xhr,settings,error){
       $("#loading").fadeOut('fast');       
       $("#showdata").fadeIn('slow');   
       $("#showdata").html('Error please, try again later or reload the Page. Reason: ' + xhr.status);
       setTimeout(function() {$("#showdata").fadeOut({"opacity":"0"})} , 5500 + 1000); // delays 1 sec after the previous one
    });
});

Wenn es ein Formular gibt, wird es mit validate übermittelt

verwenden Sie einfach den Rest des Codes

$("#fmlogin").validate({...

... ... });

0voto

Pergin Sheni Punkte 315

In meinem Fall habe ich gerade HTTP VERB aus dem Controller entfernt.

    **//[HttpPost]**   ---- just removed this verb
    public JsonResult CascadeDpGetProduct(long categoryId)
    {

        List<ProductModel> list = new List<ProductModel>();
        list = dp.DpProductBasedOnCategoryandQty(categoryId);
        return Json(new SelectList(list, "Value", "Text", JsonRequestBehavior.AllowGet));
    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X