Использование функции jQuery .post в форме пользовательского шаблона WordPress

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

  •  26-10-2019
  •  | 
  •  

Вопрос

В настоящее время я поднимаю пользовательскую контактную форму на сайте WordPress, который я пытаюсь отправить через Ajax с jQuery, однако, когда я выполняю функцию .post, Firebug сообщает об ошибке 404 в консоли, даже если я могу печатать URL в моей адресной панели и правильно отобразите страницу. Я не публикую междомен.

Вот пример моего кода, с удаленным нерелевантным кодом:

<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>

Пост никогда не бывает успешным, и форма представляет «нормальный» путь каждый раз.

Я пробовал много комбинаций в URL -части $ .post, включая /contact /, /contact, contact, /contact /, даже полный URL -адрес сайта без удачи. У кого -нибудь была эта проблема раньше? Или я делаю что -то нагло неправильно? Мое единственное предположение - это то, что связано с моей /%postname% / постоянной структурой, кроме того, что я невежественен!

Любые идеи/мысли ценится

Спасибо, Энди

Это было полезно?

Решение 2

Я наконец понял, что происходит. По сути, пост Ajax проводился с асинхруческим, поэтому до получения ответа сценарий продолжает обработка

Добавление Async: false в $ .ajax call решил проблему

Спасибо за помощь

Другие советы

Это в документации jQuery:

Это сокращенная функция Ajax, которая эквивалентна:

$.ajax({
  type: 'POST',
  url: url,
  data: data,
  success: success
  dataType: dataType
});

Попробуй это:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top