Utilizzando la funzione jQuery .post in una forma template wordpress personalizzato
Domanda
Attualmente sto montare un modulo di contatto personalizzato su un sito WordPress che sto cercando di inviare tramite la tecnologia AJAX con jQuery, tuttavia quando eseguo la funzione $ .post, firebug sta segnalando un errore 404 nella console, anche se posso digitare l'URL nella barra degli indirizzi al mio e visualizzare la pagina in modo corretto. Io non metto tra domini.
Ecco un esempio del mio codice, con il codice irrilevante rimosso:
<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>
Il post non è mai successo e la forma invia il modo "normale" ogni volta.
Ho provato molte combinazioni nella parte URL del $ .post compreso / contatto /, / contatto, contatto, / contatto /, anche l'URL completo del sito senza fortuna. Qualcuno ha avuto questo problema prima? O sto facendo qualcosa di sbagliato clamorosamente? La mia unica ipotesi è qualcosa a che fare con la mia /% postname% / permalink struttura, diverso da quello che sono incompetenti!
Tutte le idee / pensieri apprezzato
Grazie, Andy
Soluzione 2
Alla fine ho capito che cosa sta succedendo. Fondamentalmente il palo ajax veniva eseguita in modo asincrono, in modo da prima che la risposta era stata receieved lo script continuato elaborazione
L'aggiunta di async: false per una chiamata $ .ajax risolto il problema
Grazie per l'aiuto
Altri suggerimenti
Questo è nella documentazione jQuery:
Questa è una funzione di stenografia Ajax, che è equivalente a:
$.ajax({
type: 'POST',
url: url,
data: data,
success: success
dataType: dataType
});
Prova questo:
$(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);
}
});
});
});