Verwenden Sie JQuery .post -Funktion in einem WordPress -benutzerdefinierten Vorlagenformular
Frage
Ich peitsche derzeit ein benutzerdefiniertes Kontaktformular auf einer WordPress -Site, die ich über AJAX mit JQuery einreichen möchte. Wenn ich jedoch die $ .post -Funktion ausführe, meldet Firebug einen 404 -Fehler in der Konsole, obwohl ich tippen kann Die URL in meine Adressleiste und die Seite richtig anzeigen. Ich poste nicht Cross-Domain.
Hier ist ein Beispiel für meinen Code mit irrelevantem Code entfernt:
<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>
Der Beitrag ist nie erfolgreich und die Form legt jedes Mal die "normale" Art und Weise ein.
Ich habe viele Kombinationen im URL -Teil von $ .post inklusive /Kontakt /, /Kontakt, Kontakt, /Kontakt /selbst in der vollständigen URL der Website ohne Glück ausprobiert. Hat jemand dieses Problem schon einmal gehabt? Oder mache ich etwas offenes falsches? Meine einzige Vermutung ist etwas mit meiner /%-Postnamen- / Permalink -Struktur zu tun, außer dass ich ahnungslos bin!
Alle Ideen/Gedanken geschätzt
Danke, Andy
Lösung 2
Ich habe endlich herausgefunden, was los ist. Grundsätzlich wurde der Ajax -Post asynchrouns durchgeführt. Bevor die Antwort erhielt, wurde das Skript fortgesetzt
Hinzufügen von Async: Falsch zu einem $ .ajax -Anruf löste das Problem
Danke für die Hilfe
Andere Tipps
Dies ist in jQuery -Dokumentation:
Dies ist eine Abkürzungs -Ajax -Funktion, die entspricht:
$.ajax({
type: 'POST',
url: url,
data: data,
success: success
dataType: dataType
});
Versuche dies:
$(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);
}
});
});
});