2009-07-09 5 views
8

Ce que je voudrais faire est envoyer les données de retour de n'importe quel appel ajax et l'avoir également disponible dans la fonction ajaxComplete.Récupère les données de réponse dans la fonction ajaxComplete de jQuery

Alors, quand j'ai un $.post ou $.get ou $.getJSON et ainsi sur demande comme ceci:

$.post(url, options, function(DATA) 
{ 
    $('output').html(DATA); 
}); 

je veux aussi obtenir les mêmes données dans

$.ajaxComplete(function(event, XMLHttpRequest, ajaxOptions) 
{ 
    // do something with DATA that is returned by the ajax request 
    alert(DATA); 
}); 

Cela signifie que je veux dans la Fonction globale ajaxComplete également les mêmes données que je reçois lorsque j'appelle l'une des fonctions ajax.

Merci pour les réponses.

Répondre

7

XMLHttpRequest.responseText

Notez que si vous définissez l'dataType dans l'appel à JSON ou utilisez la fonction getJSON vous devrez copier ce que jquery interne ne et utiliser eval (« (» + données + «) ») pour obtenir les données dans json afin qu'il reflète le paramètre de données transmis au rappel de succès. Ou comme l'indique l'activa, appelez la méthode interne pour sauvegarder le travail.

+3

jQuery fournit maintenant une méthode parseJSON – SpoonMeiser

+0

@SpoonMeiser le tir le 9 Juillet quand je posté! – redsquare

+0

Non, je ne voulais pas le suggérer. C'était nouveau en 1.4.1, et 1.3.2 semble avoir été courant quand cette question a été posée. Je pensais juste que ça valait la peine de faire une note. – SpoonMeiser

1

Il n'existe pas de méthode simple, mais vous pouvez extraire les données de l'objet xhr. jQuery inclut une fonction interne qui fait exactement cela, mais elle n'est pas documentée.

Vous pouvez appeler cette méthode comme ceci:

$.ajaxComplete(function(event, xhr, options) 
{ 
    var data = $.httpData(xhr,options.dataType); 

    alert(data); 
}); 

Mais méfiez-vous: cela est valable dans jQuery 1.3.2, et parce qu'il est en situation irrégulière, il peut changer dans les prochaines versions de jQuery.

+1

++ pour appeler le httpData interne – redsquare

+2

A partir de la version 1.5, cette méthode a été supprimée. – cletus

+0

@cletus A partir de jQuery 1.8, la méthode .ajaxComplete() ne doit être attachée qu'à document (http://api.jquery.com/ajaxcomplete/) – prograhammer

4

Vous pouvez convertir en JSON dans votre fonction ajaxComplete en utilisant

$.parseJSON(xhr.responseText); 
Questions connexes