2009-06-01 8 views
4

Je me sers this pour charger une autre page, et en utilisant simplement leur exemple:Vérification succès ajax charge Jquery

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

Cependant, je veux exécuter une fonction lorsque la charge est réussie, et un autre si il échoue, malheureusement la description sur le rappel dit:

La fonction appelée lorsque la requête ajax est terminée (pas nécessairement de succès).

Comment puis-je m'assurer que la charge a bien fonctionné?

Merci.

Répondre

2

Vous pouvez essayer d'utiliser l'appel de méthode $ .ajax() plus détaillé. Cela vous donnera un contrôle plus fin sur l'appel AJAX (mais il nécessite également un peu plus de travail qu'un simple .load().) Il vous permettra d'appeler différentes fonctions selon que votre appel renvoie un succès ou une erreur.

Extraction: http://docs.jquery.com/Ajax/jQuery.ajax#options pour la documentation sur cette fonction. Si vous cliquez sur l'onglet "Options" de cette page, vous obtiendrez une liste complète des paramètres que vous pouvez transmettre à la fonction $ .ajax().

19

Cochez la case textStatus de la réponse.

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

Dans la détermination de comprendre la question:

A JSBin exemple de success et fail

+0

Cela fonctionne. Vous faites quelque chose de mal. –

+1

Wow, merci beaucoup! J'essayais de faire fonctionner 'textStatus' avec seulement' function (textStatus) {'mais il semble que cela ne fonctionne que lorsque ces 2 autres variables sont là aussi. ** Cela devrait être la réponse acceptée. :)) – Nathan

+0

Merci, ça marche très bien. Je n'ai aucune idée pourquoi ce n'est pas sélectionné comme réponse: / – Avik

1

Le second argument de votre rappel est la valeur d'état de chaîne pour la demande, qui sera l'un de "beforeSend", "success", "complete" et "error".

0

J'utilise cette fonction et cela a fonctionné pour moi:

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