Page de redirection à la réussite de la requête Ajax
J'ai un formulaire qui utilise Ajax côté client de vérification. La fin de la forme est la suivante:
$.ajax({
url: 'mail3.php',
type: 'POST',
data: 'contactName=' + name + '&contactEmail=' + email + '&spam=' + spam,
success: function(result) {
//console.log(result);
$('#results,#errors').remove();
$('#contactWrapper').append('<p id="results">' + result + '</p>');
$('#loading').fadeOut(500, function() {
$(this).remove();
});
}
});
EDIT: c'est mon mail3.php fichier de traiter les erreurs:
$errors=null;
if ( ($name == "Name") ) {
$errors = $nameError; //no name entered
}
if ( ($email == "E-mail address") ) {
$errors .= $emailError; //no email address entered
}
if ( !(preg_match($match,$email)) ) {
$errors .= $invalidEmailError; //checks validity of email
}
if ( $spam != "10" ) {
$errors .= $spamError; //spam error
}
if ( !($errors) ) {
mail ($to, $subject, $message, $headers);
//header ("Location: thankyou.html");
echo "Your message was successfully sent!";
//instead of echoing this message, I want a page redirect to thankyou.html
} else {
echo "<p id='errors'>";
echo $errors;
echo "</p>";
}
Je me demandais si il est possible de rediriger l'utilisateur vers une page de remerciement si la requête ajax est réussie et qu'aucun des erreurs sont présentes. Est-ce possible?
Merci!
Amit
- duplcate de stackoverflow.com/questions/3430877/...
- Ce n'est pas un doublon car je suis en train de rediriger la page uniquement si aucune erreur n'est présente. Si des erreurs sont présentes, j'ai envie d'écrire ces erreurs.
Vous devez vous connecter pour publier un commentaire.
Sûr. Juste mettre quelque chose à la fin de votre succès fonction comme:
où votre serveur renvoie la réponse
no_errors
quand il n'y a pas d'erreurs présentes.Il suffit de faire quelques vérification des erreurs, et si tout se passe ensuite définir
window.location
de rediriger l'utilisateur vers une autre page.Vous pouvez rediriger simplement dans votre
success
gestionnaire, comme ceci:Ou depuis que vous êtes de l'affichage des résultats, attendez quelques secondes, par exemple, ce serait d'attendre 2 secondes:
if(result === "Your message was successfully sent!")
avant cela, n'enverrons dans ces cas.Dans votre mail3.php fichier, vous devez intercepter les erreurs dans un try {} catch {}
Puis dans votre
success
appel, vous n'aurez pas à vous inquiéter au sujet de vos erreurs, car il ne sera jamais plus comme un succès.et vous pouvez utiliser:
window.location.href = "thankyou.php";
à l'intérieur de votre succès fonction comme Nick a déclaré.Je pense que vous pouvez faire avec:
Je suppose que vous pourriez l'attaque de deux façons;
1) insérez
window.location = 'http://www.yourdomain.com
dans la réussite de la fonction.2) Utiliser un autre appel ajax un injecter ce dans un élément sur votre page, plus d'info sur qui vous pouvez trouver dans le jQuery docs à http://api.jquery.com/jQuery.get/
J'ai posté la situation exacte sur un thread différent. Re-post.
Excusez-moi, Ce n'est pas une réponse à la question affichée ci-dessus.
Mais apporte un sujet intéressant --- LORS de l'utilisation de l'AJAX et quand ne PAS utiliser AJAX. Dans ce cas, il est bon de ne pas utiliser AJAX.
Prenons un exemple simple de login et mot de passe. Si le login et/ou mot de passe ne correspond pas, il SERAIT bien d'utiliser AJAX pour rapport un simple message "Login Incorrect". Mais si le login et le mot de passe EST correct, pourquoi aurais-je pour rappel, une fonction AJAX pour rediriger vers la page utilisateur?
Dans un tel cas, je pense qu'il serait juste sympa à utiliser un simple Formulaire de soumission. Et si la connexion échoue, rediriger vers Relogin.php qui semble même que l'Login.php avec un message dans l'url comme reconnectez-vous.le php?erreur=InvalidLogin... quelque chose comme ça...
Juste mes 2 cents. 🙂
Une autre option est: