2010-09-30 6 views
27

Je le code suivant:

$.get('http://www.example.org', {a:1,b:2,c:3}, function(xml) {}, 'xml'); 

est-il un moyen de récupérer l'URL utilisée pour faire la demande après que la demande a été faite (dans le rappel ou autrement)?

Je veux la sortie:

http://www.example.org?a=1&b=2&c=3 
+0

Lorsque vous appelez la méthode get(), vous devez passer url et paramètre. Alors pourquoi ne pas construire une chaîne pour l'url complète dans la fonction de rappel? – Vikas

Répondre

38

Je ne peux pas l'obtenir pour travailler sur $.get() parce qu'il n'a pas l'événement complete.

Je suggère d'utiliser $.ajax() comme ça,

$.ajax({ 
    url: 'http://www.example.org', 
    data: {'a':1,'b':2,'c':3}, 
    dataType: 'xml', 
    complete : function(){ 
     alert(this.url) 
    }, 
    success: function(xml){ 
    } 
}); 

craz demo

+3

Si intelligent! Je suis surpris this.url n'est pas disponible dans le rappel de succès – Christopher

+0

Y at-il un moyen de faire la même chose dans angularjs? –

+0

Je ne suis pas sûr ... je ne suis pas familier avec angularjs ... vous devriez faire une question séparée à ce sujet ... – Reigel

3

Depuis jQuery.get est juste un raccourci pour jQuery.ajax, une autre façon serait d'utiliser l'option context de ce dernier l'un, comme a déclaré dans le documentation:

la référence this au sein de tous les callbacks est l'objet dans les pas d'option de contexte sed à $.ajax dans les paramètres; Si le contexte n'est pas spécifié, il s'agit d'une référence aux paramètres Ajax eux-mêmes.

Vous utiliseriez

$.ajax('http://www.example.org', { 
    dataType: 'xml', 
    data: {'a':1,'b':2,'c':3}, 
    context: { 
    url: 'http://www.example.org' 
    } 
}).done(function(xml) {alert(this.url}); 
+0

Merci. J'ai aidé à déboguer mon erreur de soumission de formulaire dans Rails. Une nouvelle ressource a été créée avec le nouveau chemin d'action du contrôleur MyResource http: // localhost: 3000/my_resource/new. Un lien fait requête AJAX à l'action du contrôleur Rails personnalisé 'change_partial'. Dans les options AJAX j'ai utilisé 'type: 'GET', url: 'change_partial', dataType: 'html''. En cliquant sur le lien appelé action du contrôleur backend, retour HTML rendu partiel. Mais soumettre le formulaire avec des erreurs de validation a rendu le chemin 'create' http: // localhost: 3000/my_resource /, et le lien cliquant a provoqué des erreurs. Corrigé par le changement 'url: 'my_resource/change_partial'' –