Verwenden Sie JQuery .post -Funktion in einem WordPress -benutzerdefinierten Vorlagenformular

StackOverflow https://stackoverflow.com/questions/5822082

  •  26-10-2019
  •  | 
  •  

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

War es hilfreich?

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);
                    }
                });
            });
        });

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top