En utilisant la fonction de jQuery sous forme de modèle personnalisé wordpress
Question
Je fouettant actuellement un formulaire de contact personnalisé sur un site wordpress que je suis en train de soumettre via ajax avec jQuery, mais quand je joue la fonction .post $, Firebug signale une erreur 404 dans la console, même si Je peux taper l'URL dans ma barre d'adresse et afficher la page correctement. Je ne suis pas poster interdomaine.
Voici un exemple de mon code, avec le code non pertinent supprimé:
<form action="" method="post" onsubmit="return submitContactForm()" class="contactform">
<!-- inputs etc here -->
</form>
<script type="text/javascript">
function submitContactForm() {
// Omitted error checking here, return false on error
$.post('/contact'/, $('.contactform').serialize(), function(data) {
alert(data);
return false;
});
return true;
}
</script>
Le poste est jamais réussi et la forme SOUMET la façon « normale » à chaque fois.
J'ai essayé beaucoup de combinaisons dans la partie url de $ .post y compris / contact /, / contact, contact / contact /, même l'URL complète du site avec pas de chance. Quelqu'un at-il eu ce problème avant? Ou suis-je en train de faire quelque chose de manière flagrante mal? Ma seule supposition est quelque chose à voir avec mon /% postname% / permalien structure autre que je suis paumé!
Toutes les idées / pensées appréciées
Merci, Andy
La solution 2
J'ai finalement compris ce qui se passe. Fondamentalement, le poste ajax est en cours d'exécution asynchrounously, donc avant que la réponse avait été receieved le script de traitement continué
Ajout async: false à un appel résolu le problème .ajax $
Merci pour l'aide
Autres conseils
Ceci est dans la documentation jQuery:
Ceci est un raccourci fonction Ajax, qui est équivalent à:
$.ajax({
type: 'POST',
url: url,
data: data,
success: success
dataType: dataType
});
Essayez ceci:
$(function()
{
$("button#send").click(function() {
$.ajax({
type: "POST",
url: "post.php",
data: $("#form").serialize(),
success: function(msg){
$("#msg_ok").html(msg);
$("#form").reset();
//alert(msg);
}
});
});
});