jQuery.post() et rediriger via ajax
Je suis en utilisant jQuery.post()
pour envoyer des données au serveur, lorsque le serveur envoie des données vers le client, le post() callback n'est appelé. Je sais que le serveur est peut-réponse avec la redirection champ d'en-tête ("Location
").
actuellement, la redirection ne se produit pas. quelle peut être la raison?
est-il possible d'exécuter un script avant de le rediriger se produire?
Mise à JOUR:
ci-joint une aide de l'extrait de code. je sais que la méthode POST est acceptée par le serveur et que le serveur répond à la POSTE. en quelque sorte, toujours le error()
est invoquée (il semble que cela se fait avant même que la réponse est acceptée par le client\browswer).
quel est le problème?
$(document).ready(function() {
$("#loginForm").submit(function() {
$.ajax({
type : "POST",
data : $("#loginForm :input").not("#loginBtn").serialize(),
url : "http://localhost/auth",
success : function(data, textStatus, jqXHR) {
alert("success");
alert(jqXHR.getResponseHeader("Location"));
},
error : function(jqXHR, textStatus, errorThrown) {
alert("error");
}
});
});
});
- Pouvez-vous ajouter des détails de l'erreur dans votre question?
Vous devez vous connecter pour publier un commentaire.
jquery.post()
œuvres par l'émission d'une requête Ajax. Dans un appel Ajax, le script PHP fonctionne en mode asynchrone (penser que c'est un thread d'arrière-plan). Ainsi, le script PHP ne peut pas rediriger le navigateur du client. La voie à suivre serait d'avoir le script PHP responsd avec l'URL de redirection, et de rediriger à l'aide de javascript.Dans votre POST de rappel:
MODIFIER
De Jquery documentation sur jquery.ajax()
statusCode(ajouté 1.5)Carte
Une carte de numérique HTTP codes et les fonctions à appeler lorsque la réponse a le code correspondant. Par exemple, la suite vous alerte lorsque l'état de la réponse est une erreur 404:
Si la demande est acceptée, le code de statut de la prise de fonctions de la même paramètres que la réussite de rappel; si elle aboutit à une erreur, ils prennent les mêmes paramètres que l'erreur de rappel.
jquery.post()
est un raccourci pourjquery.ajax()
. Vous devrez gérer un code d'état de302
success()
eterror()
, lors de la réception des données depuis le serveur, ou une erreur s'est produite respectivement.error()
callback n'est appelé avant même que la réponse du serveur a été accepté par le client\navigateur. j'ai même essayé d'augmenter l'ajax délai d'attente, mais il ne résout pas le problème.Merci de rediriger les cas avoir une simple réponse sans la redirection d'impression importe quel drapeau comme "redirect" et et à écrire redirection côté client à l'aide de
Ne redirige pas sur le serveur.
Il va travailler.
Si vous effectuez une opération qui entraîne une redirection, JQuery n'est pas le détecter. Le navigateur gère automatiquement les coulisses, afin de créer une expérience transparente.
jQeury.post()
fonction de rappel.