2010-08-11 8 views
2

J'essaie d'obtenir les données de succès d'un appel Ajax jquery afin que je puisse l'utiliser ailleurs, mais pour une raison quelconque est seulement accessible dans l'appel de succès réel, donc imméditalement ci-dessous fonctionne mais l'autre doesnt 'jQuery, en passant les données de réussite d'AJAX à une autre fonction?

 success: function(data) { 
     alert (data) 
     } 

cela ne fonctionne pas lorsque je tente de transmettre des "données" sur une autre fonction

$.ajax({ 
     type: 'POST', 
     url: 'http://localhost/site1/utilities/ajax_component_call_handler', 
     data: { 
      component_function: component_function, 
      param_array: param_array 
      }, 
      dataType: "json", 
     success: function(data) { 
     receiver (data) 
     } 
    }); 

} 

mon ajax succès appelle ceci:

function receiver (data) { 

    ajax_return = data 
alert (ajax_return) 
} 
+0

est-ce que votre fonction de récepteur est appelée? Avez-vous vérifié dans firebug? Aussi, faites-vous cela entre les balises de script ou dans un plugin/objet? – hvgotcodes

+0

Votre code doit fonctionner. Êtes-vous sûr que 'receiver()' est dans la bonne portée? Par exemple, si l'appel '$ .ajax()' est en dehors de $ (document) .ready (function() {...}) ', mais que' receiver() 'est à l'intérieur, alors' receiver() ' ne sera pas visible d'où vous l'appelez. – user113716

+0

le problème était le nom de la variable "données", il appelait la fonction mais ne passait pas la variable de données – Rick

Répondre

3

N'utilisez pas data comme nom de variable. Les objets jQuery ont déjà un objet appelé data qui contient des données arbitraires. Si vous appelez votre variable dat, vous devriez obtenir de meilleurs résultats.

Voir http://api.jquery.com/jQuery.data/

Une mise en œuvre plus courte pourrait être juste dire success: receiver sans paramètre, et écrivez votre signature récepteur

function receiver(data, textStatus, XMLHttpRequest) { 
    /* ... */ 
} 

Ensuite, les données sont transmises par le rappel jQuery.

+2

Il n'y a rien de mal à utiliser 'data' comme nom de variable. Je ne vois aucun conflit avec la méthode 'data' de jQuery. – user113716

+1

merci, c'était ça .. bizarre comment jquery utilise "données" dans leurs exemples, au moins c'est où je pense que j'ai obtenu le nom var de – Rick

+1

@Rick - Y at-il un autre code pertinent que vous n'avez pas posté? Tous les exemples de 'data' dans votre code ci-dessus sont dans des fermetures. Il ne devrait pas y avoir de conflit. – user113716

3

Avez-vous essayé:

$.ajax({ 
    type: 'POST', 
    url: 'http://localhost/site1/utilities/ajax_component_call_handler', 
    data: { 
     component_function: component_function, 
     param_array: param_array 
    }, 
    dataType: 'json', 
    success: receiver 
}); 

Ou tout simplement utiliser un autre nom de variable autre que data comme il est déjà utilisé.

Questions connexes