сериализация и отправка формы с помощью jQuery POST и php

Я пытаюсь отправить данные формы с помощью 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, и все данные верны.

Я не вижу, как это будет проблемой конфигурации сервера. Есть идеи?

Спасибо!

php,jquery,forms,

33

Ответов: 9


77

Вы можете использовать эту функцию

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 handling here');
    }
});

Тип возврата - json

EDIT: я использую event.preventDefaultдля предотвращения отправки браузера в таких сценариях.

Добавление большего количества данных в ответ.

dataType: "jsonp" если это междоменный вызов.

beforeSend: // это функция обратного вызова перед запросом

complete: // функция, которая должна вызываться после кода запроса ends.so, который должен быть выполнен независимо от успеха или ошибки, может идти здесь

async: // по умолчанию все запросы отправляются асинхронно

cache:// по умолчанию true. Если установлено значение false, это заставит запрашиваемые страницы не кэшироваться браузером.

Найти официальную страницу здесь


Вы можете добавить дополнительные данные с данными формы

используйте 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');
    }
});

0

Вы проверили консоль, если данные из формы правильно сериализованы? Успешен ли запрос ajax? Также вы не закрыли цитату-заполнитель, что может вызвать некоторые проблемы:

 <textarea name="comentarii" cols="36" rows="5" placeholder="Message>  

0

Вы смотрели в firebug, если POST или GET ?.

проверьте дисплей консоли.

Поместите тестовый скрипт:

console.log(data);

Вы можете увидеть ответ с сервера, если он что-то показывает.


0

Проблема может быть в конфигурации PHP:

Проверьте файл max_input_vars в файле php.ini.

Попробуйте увеличить значение этого параметра до 5000 в качестве примера.

max_input_vars = 5000

Затем перезапустите веб-сервер и попробуйте.

PHP, JQuery, форма,
Похожие вопросы