L'obtention de l'URL après un POST qui l'a redirigé à l'aide de jquery .ajax()
Je suis le PRG (Post-Rediriger-Get) dans mon application web, et d'utiliser quelque chose comme ce qui suit pour faire la plupart de mes POSTs:
$.ajax({
type: 'POST',
url: 'A.html',
data: '....',
statusCode: {
302: function() {
alert("302"); //this is never called
},
200: function() {
alert("200");
},
},
success: function (data, textstatus) {
alert('You are now at URL: ' + ??);
},
error: function (data) {
},
complete: function (jqXHR, textstatus) {
alert('You are now at URL: ' + ??);
},
});
J'ai besoin d'obtenir l'URL de redirection a eu lieu, c'est à dire l'URL de la finale d'OBTENIR que l' .ajax() de la fonction appelée. Par exemple, un POSTE de A.html peut rediriger vers un B.html ou C.html (toujours via 302). Comment puis-je obtenir l'URL finale?
Je suis à l'aide de jquery 1.5.1, et l'utilisation d'un proxy ont vu que jquery est en silence à la suite de la redirige - que je suis heureux avec. Je n'aime pas parler de toutes les Url qui ont répondu avec 302 - je voudrais juste savoir l'URL de la demande finale au moment de l' .ajax()'s "succès" ou "complète:" les crochets sont licenciés.
success
partie de l'ajaxPouvez-vous expliquer avec l'exemple et indiquer si la imbriqués les redirections sont en train d'arriver. Élaborer avec l'exemple-- Par exemple un POSTE de A.html peut rediriger vers un B.html ou C.html (toujours via 302). Comment puis-je obtenir l'URL finale?
J'ai confirmé à l'aide d'un serveur proxy que le POSTE de A.html répond avec un "302 Found" et l'Emplacement: B.html. Cependant, le noeud du problème, c'est que je ne peux pas la requête javascript/jquery pour obtenir toutes les preuves que j'ai été redirigé vers B.html n'importe où. Si je demande $(this).url-je obtenir "A.html", de même pour la fenêtre.emplacement etc.
OriginalL'auteur Tom Wells | 2011-05-26
Vous devez vous connecter pour publier un commentaire.
J'ai enfin résolu ce problème en ajoutant un en-tête supplémentaire dans toutes mes réponses (par exemple, "X-MYAPP-PATH: /Admin/Index").
Mon javascript pourrait donc être modifié comme suit:
Je persiste à croire cependant que jquery doit être en mesure de me donner l'URL en cours, donc je considère que c'est un hack.
OriginalL'auteur Tom Wells
Une meilleure solution est de fournir de jQuery ajax avec un objet xhr comme ceci:
Ensuite, vous pouvez accéder à l'URL courante dans tout rappel
OriginalL'auteur Nowres Rafed
D'abord essayer de comprendre le code d'état renvoyé par la redirection (généralement > 300).
Un point de plus à noter que l'ordre d'exécution:
le succès\échec --> statusCode fonction --> Complet
getHeader fonctionne très bien, mais j'ai besoin de vérifier 302(peut-être que vous avez raison
Vous pouvez faire
xhrReq. getAllResponseHeaders()
, mais siLocation
n'est pas là, vous êtes hors de la chance. Et @TomWells est correct, en tout cas, vous n'aurez pas de réponse 302. Les redirections sont cachés par le navigateur.OriginalL'auteur Amit Gupta