Подтвердить что ты не робот

Сериализация и отправка формы с помощью 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, и все данные верны.

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

Благодарю вас!

4b9b3361

Ответ 1

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

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, чтобы предотвратить отправку браузера в такие сценарии.

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

проверьте отображение консоли.

Вставьте тест script:

console.log(data);

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

Ответ 5

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

Пожалуйста, проверьте настройки max_input_vars в файле php.ini.

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

max_input_vars = 5000

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

Ответ 6

См. ответ из предыдущего сообщения. Чем вы можете использовать .post() или .get() для отправки сериализованных данных на сервер.

Преобразование данных формы в объект JavaScript с помощью jQuery

В любом случае, это очень запутывает вашу ситуацию, вызванную этим недостатком деталей.

Если вы используете веб-сервер (нелокальный), этот код может быть неправильным, если вы забыли настроить фактическую ссылку jquery. Я не знаю, даже если вы ссылаетесь на jquery на абсолютный путь или относительный путь!?

Ответ 7

 $("#contactForm").submit(function() {

    $.post(url, $.param($(this).serializeArray()), function(data) {

    });
 });

Ответ 8

Регистрация двух дней или пользователей, автоматически зарегистрированных "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();
                });
            });
         });