Отправка формы с использованием - PullRequest
3 голосов
/ 14 марта 2012

У меня небольшая проблема с этим, и я не вижу, что я делаю неправильно.У меня есть эта форма:

<div class="user">

    <form name="userDetails" id="userDetails" method="post" >
        <input type="text" name="firstName" id="firstName" class="firstName"  placeholder="first name " />
        <input type="text" name="lastName" id="lastName" class="lastName"  placeholder="last name " />
        <input type="text" name="address" id="address" class="address"  placeholder="First line of Address " />
        <input type="text" name="postcode" id="postcode" class="postcode"  placeholder="Postcode " />
        <input type="text" name="email" id="email" class="email"  placeholder="E-Mail " />
        <input type="text" name="phone" id="phone" class="phone"  placeholder="Phone " />

        <input type="button" id="submitDetails" class="submitDetails" name="submitDetails" value="Submit Your Details" />

    </form>

</div>

Так что, когда пользователь нажимает кнопку, он должен отправить форму, а затем иметь этот PHP, чтобы воздействовать на форму (я знаю, что SQL не является подготовленным оператором и уязвимдля инъекций, но это будет сделано позже):

 <div class="overallSummary">

  <?php
    $fName = $_POST['firstName'];
    $lName = $_POST['lastName'];
    $address = $_POST['address'];
    $pc = $_POST['postcode'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];

    $userSQL = "INSERT INTO user (forename, surname, address, postcode, email, phone) VALUES ('$fName', '$lName', '$address', '$pc', '$email', '$phone')";


    $result = mysql_query($userSQL) or die(mysql_error());

   ?>
  </div>

Однако, когда я проверяю свои таблицы, никакая информация не вставляется в базу данных.Принимая во внимание, что этот код находится в том же документе, поэтому я не использовал action = "file.type" в объявлении формы.Это потому, что я не уверен, подходит ли здесь Ajax.

Любая помощь очень ценится, спасибо.

РЕДАКТИРОВАТЬ

Что я могсделать, это использовать AJAX с JQuery для прослушивания события нажатия кнопки:

$(document).ready(function() {
  $(".submitDetails").click(function(e) {
      e.preventDefault();
       var userData = $("#?").val();
       var dataToSend = '?=' + eNameData;

    $.ajax({                
        url: "userDetailTest.php", 
        type: "POST",
        data: dataToSend,     
        cache: false,
        success: function(php_output)
        {
         $(".overallSummary").html(php_output);
           }    
    });
  });
});

Идея здесь заключается в том, чтобы использовать этот AJAX для нажатия кнопки и вызова функции AJAX, но я не уверен, что поставитькак идентификатор в переменной 'userData' и что добавить в переменную 'dataToSend', чтобы она работала с моей формой.

Ответы [ 6 ]

5 голосов
/ 14 марта 2012

На самом деле для отправки формы ваш input тип должен быть submit, а не button.

Использование тега button также будет работать.

<input type="submit" id="submitDetails" class="submitDetails" name="submitDetails" value="Submit Your Details" />

Если у вас нет кода javascript, запускающего отправку формы.

Атрибут action также требуется в соответствии со спецификацией, но даже без нее большинство браузеров предполагают, что URL-адрес действия является текущей страницей.

Редактировать : если вы хотите отправить данные формы безперезагрузив страницу, вы имеете , чтобы использовать ajax или поместить всю форму под iframe.(Пожалуйста, вместо этого сделайте это с помощью ajax).

В противном случае нажатие на input[type=button] на самом деле ничего не даст.

Пользовательские данные - это фактические данные из вашей формы, которые вы можете получитьэто используя:

$(document).ready(function() {
  $(".submitDetails").click(function(e) {
      e.preventDefault();

    // See Teez answer, I wasn't aware of this.
    var dataToSend = $("#userDetails").serializeArray();

    $.ajax({                
        url: "userDetailTest.php", 
        type: "POST",
        data: dataToSend,     
        cache: false,
        success: function(php_output)
        {
         $(".overallSummary").html(php_output);
        }    
    });
  });
});
1 голос
/ 14 марта 2012

Есть один из способов:

Просто используйте ниже, если не хотите обновлять страницу:

 var dataToSend = $('userDetails').serializeArray();

Или попробуйте использовать приведенный ниже код для отправки формы с помощью jquery:

$("userDetails").submit(function(){
  // do your stuff
  $.post(
    "post.php",
    // add all stuff for inserting data 
  );

});

Ниже ссылки помогут вам много:

http://www.ryancoughlin.com/2008/11/04/use-jquery-to-submit-form/

1 голос
/ 14 марта 2012

Добавьте действие в форму и используйте submit.

<form action="pass_data_here.php" method="post">

<input type="submit" value="Submit"/>

Также, чтобы упростить отладку, вы можете просто повторить сначала поля перед сохранением их в БД. Таким образом, вы можете поиграться с данными, не тратя время на переход к таблице администратора базы данных.

Редактировать: Так как вы действительно хотите кнопку, этот ajax может быть полезен

$('.submitDetails').click(function(e) {
            e.preventDefault();

              var dataString =  "";
              //this will get all the data of your form separated by &
              $("form input:text").each(function(index, element) {
                    dataString += $(this).attr("id")+"="+$(this).val()+"&";
                });
            dataString = '?' + dataString; //added the needed ?

            $.ajax({                
                url: "userDetailTest.php", 
                type: "POST",
                data: dataString,     
                cache: false,
                success: function(php_output)
                {
                 $(".overallSummary").html(php_output);
                   } 
                });

            });//end submitDetails
0 голосов
/ 14 марта 2012

Три предыдущих ответа нужно объединить, чтобы дать один ответ, поскольку у вас фактически отсутствуют две вещи в работающей HTML-форме, action и submit:

<form action="mytarget.php" method="post"/>
....add input fields...
<input type="submit" value="Submit"/>
</form>
0 голосов
/ 14 марта 2012

Вам все еще нужно действие.Если PHP находится на той же странице, вы можете использовать что-то вроде:

action="<?php echo $_SERVER['PHP_SELF']"
0 голосов
/ 14 марта 2012

Вы в основном ответили на свой вопрос.Вам нужно поместить действие в форму, указывающее на скрипт, который обрабатывает форму.Начните с этого, и если вы решите использовать AJAX позже, вы всегда можете немного изменить код, чтобы сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...