2013-08-06 5 views
0

Я пытаюсь использовать пост jquery, чтобы попытаться отправить данные формы асинхронно в файл php, который будет загружать данные в мою базу данных.

<!DOCTYPE html> 
<html> 
<head> 
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
</head> 
<body> 
    <div id="contact_form"> 
    <form id="contact" name="contact" method="post"> 
    <fieldset> 
    <label for="name" id="name_label">Name</label> 
    <input type="text" name="name" id="name" size="30" value="" class="text-input" /> 

    <label for="email" id="email_label">Return Email</label> 
    <input type="text" name="email" id="email" size="30" value="" class="text-input" /> 

    <label for="phone" id="phone_label">Return Phone</label> 
    <input type="text" name="phone" id="phone" size="30" value="" class="text-input" /> 

    <br /> 
    <input type="submit" name="submit" class="button" id="submit_btn" value="Submit" /> 
    </fieldset> 
</form> 
</div> 
    <div id="result"></div> 

<script> 
$(document).ready(function(){ 
/* attach a submit handler to the form */ 
$("#submit_btn").submit(function(event) { 

    /* stop form from submitting normally */ 
    event.preventDefault(); 

$.post("process.php", $("#contact").serialize()); 


    return false; 
}); 
}); 
</script> 

</body> 
</html> 

Я знаю, что это последовательное кодирование данных, но мой PHP скрипт не выбирая его, я не уверен, что я делаю неправильно. Я знаю, что это просто, но я работал над этим несколько дней и, похоже, не понимаю. Я понимаю, как это сделать без jquery, но в этом случае мне это действительно нужно. Вот мой PHP:

if(isset($_POST['submit'])) 
{ 
    $var_name = $_POST['name']; 
    $var_email = $_POST['email']; 
    $var_phone = $_POST['phone']; 

//This establishes a connection to the database. It also says what to do if the connection fails. 
try { 
    $db_handle = new PDO("mysql:host=$server;dbname=$database", $db_username, $db_password); 
    $db_handle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $stmt = $db_handle->prepare('INSERT INTO contact(name, email, phone) VALUES(:name, :email, :phone)'); 
    $stmt->execute(array(
     ':name' => $var_name, 
     ':email' => $var_email, 
     ':phone' => $var_phone, 
     )); 
    } catch(PDOException $e) { 
    echo 'Error: ' . $e->getMessage(); 
    } 
} 

ответ

0

Когда вы сериализовать форму с JQuery, кнопка отправки не включена, так что вы должны заменить

if(isset($_POST['submit'])) 

по

if ($_SERVER['REQUEST_METHOD'] === 'POST') 

EDIT

Изменение $("#submit_btn").submit(...); по $("#contact").submit(...);

+0

Я сделал это, но он не работает, я пытаюсь понять, как увидеть var_dump страницы, чтобы узнать, есть ли что-то. – redappleorigin

+0

Я видел вашу проблему, проверяю мое редактирование. Вы должны представить форму не кнопкой :). – L105

+0

Миллион раз ДА !!! Я знал, что это что-то простое, я просто не мог понять, что! Человек, которого я на протяжении многих дней набросился на меня. Я чувствую себя глупо и с облегчением в то же время, спасибо, спасибо, спасибо! – redappleorigin

1
$("contact").serialize() 

Должно быть:

$("#contact").serialize() 

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

+0

Привет! пик которого, я пробовал это первым, и он тоже не работал. – redappleorigin

+0

Спасибо за помощь! – redappleorigin

0

http://api.jquery.com/serialize/

В JQuery API состояние, которые представляют значение кнопки не будет передано. Таким образом, сообщение может быть связано с вашим запросом php просто отлично предложит искать требуемое поле вместо поиска $ _POST ['submit'] в вашем условном выражении.

Вы также можете попробовать использовать var_dump ($ _ POST) перед кодом и посмотреть, что происходит с этим скриптом.

+0

Я попытался изменить $ _POST ['submit'] на $ _POST ['name'], но я все еще не мог заставить его работать. Теперь я пытаюсь вернуть var_dump из массива post. – redappleorigin

Смежные вопросы