Я пытаюсь отправить данные формы с помощью jQuery. Однако данные не доходят до сервера. Не могли бы вы рассказать мне, что я делаю неправильно?
// FORM <form id="contactForm" name="contactForm" method="post"> <input type="text" name="nume" size="40" placeholder="Nume"> <input type="text" name="telefon" size="40" placeholder="Telefon"> <input type="text" name="email" size="40" placeholder="Email"> <textarea name="comentarii" cols="36" rows="5" placeholder="Message"> </textarea> <input id="submitBtn" type="submit" name="submit" value="Trimite"> </form>
Javascript:
Javascript Code in the same page as the form: <script type="text/javascript"> $(document).ready(function(e) { $("#contactForm").submit(function() { $.post("getcontact.php", $("#contactForm").serialize()) //Serialize looks good name=textInNameInput&&telefon=textInPhoneInput---etc .done(function(data) { if (data.trim().length >0) { $("#sent").text("Error"); } else { $("#sent").text("Success"); } }); return false; }) }); </script>
И серверная сторона:
/getcontact.php $nume=$_REQUEST["nume"]; // $nume contains no data. Also tried $_POST $email=$_REQUEST["email"]; $telefon=$_REQUEST["telefon"]; $comentarii=$_REQUEST["comentarii"];
Не могли бы вы рассказать мне, что я делаю неправильно?
EDIT: проверено var_dump($_POST)
и он возвращает пустой массив.
Странно, что тот же самый код, проверенный на моей локальной машине, отлично работает. Если я загружу файлы на своем хостинговом пространстве, он перестает работать.
Я попытался сделать старомодную форму без использования jquery, и все данные верны.
Я не вижу, как это будет проблемой конфигурации сервера. Есть идеи?
Спасибо!
Вы можете использовать эту функцию
var datastring = $("#contactForm").serialize(); $.ajax({ type: "POST", url: "your url.php", data: datastring, dataType: "json", success: function(data) { //var obj = jQuery.parseJSON(data); if the dataType is not specified as json uncomment this // do what ever you want with the server response }, error: function() { alert('error handing here'); } });
Тип возврата – json
EDIT: я использую event.preventDefault
для предотвращения event.preventDefault
браузера в таких сценариях.
Вы можете добавить дополнительные данные с данными формы
используйте serializeArray и добавьте дополнительные данные:
var data = $('#myForm').serializeArray(); data.push({name: 'tienn2t', value: 'love'}); $.ajax({ type: "POST", url: "your url.php", data: data, dataType: "json", success: function(data) { //var obj = jQuery.parseJSON(data); if the dataType is not specified as json uncomment this // do what ever you want with the server response }, error: function() { alert('error handing here'); } });
Вы проверили консоль, если данные из формы правильно сериализованы? Успешен ли запрос ajax? Также вы не закрыли цитату-заполнитель, что может вызвать некоторые проблемы:
<textarea name="comentarii" cols="36" rows="5" placeholder="Message>
Вы смотрели в firebug, если POST или GET ?.
проверьте дисплей консоли.
Поместите тестовый скрипт:
console.log(data);
Вы можете увидеть ответ с сервера, если он что-то показывает.
Проблема может быть в конфигурации PHP:
Проверьте файл max_input_vars в файле php.ini.
Попробуйте увеличить значение этого параметра до 5000 в качестве примера.
max_input_vars = 5000
Затем перезапустите веб-сервер и попробуйте.
См. Ответ из предыдущего сообщения. Чем вы можете использовать .post () или .get () для отправки сериализованных данных на сервер.
Преобразование данных формы в объект JavaScript с помощью jQuery
Во всяком случае, это очень запутывает вашу ситуацию, вызванную этим недостатком деталей.
Если вы используете веб-сервер (нелокальный), этот код может быть неправильным, если вы забудете настроить фактическую ссылку jquery. Я не знаю, даже если вы ссылаетесь на jquery на абсолютный путь или относительный путь !?
$("#contactForm").submit(function() { $.post(url, $.param($(this).serializeArray()), function(data) { }); });
Регистрация двух участников или пользователей, автоматически зарегистрированных «Shouttoday» ajax, когда они завершают регистрацию по форме.
var deffered = $.ajax({ url:"code.shouttoday.com/ajax_registration", type:"POST", data: $('form').serialize() }); $(function(){ var form; $('form').submit( function(event) { var formId = $(this).attr("id"); form = this; event.preventDefault(); deffered.done(function(response){ alert($('form').serializeArray());alert(response); alert("success"); alert('Submitting'); form.submit(); }) .error(function(){ alert(JSON.stringify($('form').serializeArray()).toString()); alert("error"); form.submit(); }); }); });