2009-06-01 23 views
4

Ich habe this wurde unter Verwendung eines anderen Seite zu laden, und nur ihr Beispiel mit:Überprüfung JQuery Ajax Last Erfolg

$("#links").load("/Main_Page #jq-p-Getting-Started li"); 

Jedoch habe ich eine Funktion ausgeführt werden soll, wenn die Last erfolgreich ist, und eine andere, wenn es schlägt fehl, leider die Beschreibung auf dem Rückruf sagt:

Die Funktion aufgerufen, wenn die Ajax-Anfrage abgeschlossen ist (nicht unbedingt Erfolg).

Wie stelle ich sicher, dass die Ladung erfolgreich war?

Danke.

Antwort

2

Sie könnten versuchen, den detaillierteren Methodenaufruf $ .ajax() zu verwenden. Dies gibt Ihnen eine feinere Kontrolle über den AJAX-Aufruf (aber es erfordert auch etwas mehr Arbeit als ein einfaches .load().) Sie können verschiedene Funktionen aufrufen, abhängig davon, ob Ihr Aufruf erfolgreich oder fehlerhaft ist.

Auschecken: http://docs.jquery.com/Ajax/jQuery.ajax#options für Dokumentation zu dieser Funktion. Wenn Sie auf die Registerkarte "Optionen" auf dieser Seite klicken, erhalten Sie eine vollständige Liste der Parameter, die Sie an die Funktion $ .ajax() übergeben können.

19

Überprüfen Sie die textStatus der Antwort.

$("#links").load("/Main_Page #jq-p-Getting-Started li", 
    function (responseText, textStatus, XMLHttpRequest) { 
    if (textStatus == "success") { 
     // all good! 
    } 
    if (textStatus == "error") { 
     // oh noes! 
    } 
    } 

Bei der Bestimmung, um das Problem herauszufinden:

A JSBin Beispiel success und fail

+0

Dies funktioniert. Du machst etwas falsch. –

+1

Wow, vielen Dank! Ich habe versucht, 'textStatus' nur mit' function (textStatus) {'arbeiten zu lassen, aber es sieht so aus, als ob es nur funktioniert, wenn diese 2 anderen Variablen auch da sind. ** Dies sollte die akzeptierte Antwort sein. :) ** – Nathan

+0

Danke, es funktioniert super. Ich habe keine Ahnung, warum dies nicht als Antwort ausgewählt wurde: – Avik

1

Das zweite Argument für Ihren Callback ist der String Statuswert für die Anforderung, das wird einer von "beforeSend", "success", "complete" und "error" sein.

0

Ich benutze diese Funktion und es funktionierte für mich:

$.ajax({ 
    url: "demo_test.txt", 
    success: function(result){ 
     location:reload(); 
    } 
}); 
Verwandte Themen