使用AJAX将数据发送到数据库查询

时间:2014-12-17 16:24:40

标签: php html ajax

我想使用AJAX将表单的内容从我的HTML页面发送到PHP页面。似乎AJAX表单正在工作,我可以看到它在按下按钮时会做出反应。但是,PHP页面不会收到表单的内容,因为查询不会发生。 你能告诉我我做错了什么吗?它是在PHP页面中还是AJAX代码?

HTML页面:jQuery-ajax.html

形式:

<form action='AjaxDifferentBids.php' method='post' id="form1">
    <input type='text' id="name" name='name'/><br>
    <input type='text' id="email" name='email'/><br>
    <input type='button' name='submit' value='Submit' id="submit" />
</form>

AJAX代码:

$(function(){
    $('#submit').click(function(){
     $.ajax({
        type:'POST', 
        url: 'AjaxDifferentBids.php', 
        data: $('#form1').serialize(),
        success: function(response) {
      $('.MyJobsResultsRight').hide();
      $('.MyJobsResultsRightOtherBid').show();
            $('.MyJobsResultsRightOtherBid').find('.form_result').html(response);
        }
    });         
  });
});

PHP页面:AjaxDifferentBids.php

<?php
//set connection variables
$host = "";
$username = "";
$password = "";
$db_name = ""; //database name


$mysqli = new mysqli($host, $username, $password, $db_name);

//check if any connection error was encountered
if(mysqli_connect_errno()) {
echo "Error: Could not connect to database.";
exit;
}


if(isset($_POST['Submit'])){ //the the user submitted the form

//include database connection
include 'Connection.php';



$query = "SELECT * FROM firms WHERE email = '".$_POST['email']."'";

//execute the query
if( $mysqli ->query($query) ) {
//if saving success
echo "Succes";
}else{
//if unable to create new record
echo "Database Error: Unable to create record.";
}
//close database connection
$mysqli->close();
} ?>

非常感谢!!

2 个答案:

答案 0 :(得分:3)

如果PHP没有收到表单内容,则会在JS错误控制台中确认。在chrome中它会说:

POST http://yourdomain.tld/AjaxDifferentBids.php 404 (Not Found)

如果是这种情况,请检查PHP是否与HTML位于同一目录中,并且您正在使用Web服务器加载HTML,而不仅仅是使用file:/// protocol打开它。

如果PHP正在接收ajax调用 - 显示如下:

XHR finished loading: POST "http://yourdomain.tld/AjaxDifferentBids.php"

然后PHP中的第一个问题是:

if(isset($_POST['Submit'])){

$_POST['Submit']不存在,因为您没有真正通过发布HTML页面提交表单,您使用了ajax。 $ _POST数组实际上如下所示:

array (
  'name' => 'thisname',
  'email' => 'thisemail',
)

因此,如果您检查其中一个值而不是“提交”,那么您应该能够执行您的mysql查询。

最后,如果使用error logging,您会发现调试PHP要容易得多。

答案 1 :(得分:3)

jQuery的序列化函数不捕获提交按钮,因此您需要自己附加值

"Submit=Submit&" + $("#form1").serialize()