Обновление 2: я узнал, что случилось! В файле .htaccess произошла 301 переадресация. Я отправлю его в качестве ответа, как только мне позволено (пользователям до 10 лет приходится ждать 8 часов).
Обновление: я принял предложение Barmar и проверил вкладку в сети (вкладка, с которой я не слишком хорошо знаком), и заметил, что получаю 301 из handle.php
См. Снимок экрана. Я собираюсь сделать некоторые поиски и опубликовать свои результаты.
Оригинальное сообщение: Я использую плагин проверки JQuery для проверки и отправки данных формы через ajax. Проблема не в том, что данные отправляются, но обработчик формы говорит, что в массиве $ _POST нет элементов. Я проверил несколько разных методов отправки ajax, и данные отправляются, но обработчик формы не видит никаких значений $ _POST [].
Примечание. Я должен использовать плагин проверки JQuery, поэтому он должен обрабатываться .validate.submitHandler (). Любые $(form).on()
не будут достаточными.
<form action="handle.php" class="sky-form sky-form-modal" id="sky-form-modal" method= "post" name="sky-form-modal"> <label class="input"> <input name="name" placeholder="Name" type= "text"> </label> <label class="input"><input name="company" placeholder="Company" type= "text"> </label> <footer> <button class="button" type="submit">Send request</button> <div class="progress"></div> </footer> </form> <script> $("#sky-form-modal").validate({ submitHandler: function(form) { var $form = $("#sky-form-modal"); //being explicit for testing var $inputs = $form.find("input, select, button, textarea"); var serializedData = $form.serialize(); request = $.ajax({ url: "handle.php", type: "POST", data: serializedData }); console.log('data: ' + serializedData); request.done(function(response, textStatus, jqXHR) { console.log("Response: " + response); }); }, }); </script>
<?php if(isset($_POST['name'])) { echo 'we got it'; } else { echo 'name not set'; } ?>
Хорошо, так что кажется, что все работает, проверьте консоль.log после того, как я заполнил имя пользователя и оставил компанию пустым:
data: name=testtest&company= Response: name not set
Как вы можете видеть, сериализация работает и захватывает всю информацию, но когда обрабатывается handle.php, он сообщает мне, что $_POST[]
пуст. Проникновение через него на handle.php доказывает это:
foreach($_POST as $key=>$value) { echo "$key: $value \n"; }
Которая не возвращается вообще. Я также пробовал ajaxSubmit()
и form.submit()
но получаю точные точные результаты.
Это выглядит правильно для меня, потому что я искал и искал stackoverflow и сталкивался с тем, что большинство проблем с этим связано с атрибутом «name» на входных тегах, который уже сделан.
Заранее спасибо!!