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

Php 使用AJAX将数据发送到数据库查询,php,html,ajax,Php,Html,Ajax,我想使用AJAX将表单内容从HTML页面发送到PHP页面。看起来AJAX表单正在工作,我可以看到当按下按钮时它会做出反应。但是,PHP页面不会接收表单的内容,因为查询不会发生这种情况。 你能告诉我我做错了什么吗?它是在PHP页面中还是在AJAX代码中 HTML页面:jQuery ajax.HTML 表格: PHP页面:AjaxDifferentBids.PHP <?php //set connection variables $host = ""; $username = ""; $pas

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

HTML页面:jQuery ajax.HTML

表格:

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();
} ?>

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

POST http://yourdomain.tld/AjaxDifferentBids.php 404 (Not Found)
如果是这种情况,请检查PHP与HTML位于同一目录中,并且您正在使用web服务器加载HTML,而不仅仅是使用文件:///协议打开它

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

XHR finished loading: POST "http://yourdomain.tld/AjaxDifferentBids.php"
那么PHP中的第一个问题是:

if(isset($_POST['Submit'])){
$\u POST['Submit']
不存在,因为您没有通过发布HTML页面提交表单,而是使用了ajax。$\u POST数组实际上如下所示:

array (
  'name' => 'thisname',
  'email' => 'thisemail',
)
因此,如果您检查其中一个值而不是“提交”,那么您应该能够执行mysql查询


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

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

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

删除该操作会将该操作设置为当前URL。不要移除它。确保其URL指向JS失败时的正常回退。检查JS控制台是否存在网络错误或警告危险:您容易受到需要从中删除的内容的攻击。您是否包括JS文件(如果在其他文件中)或ajax代码是否在html文件中?您不需要捕获
$(“#提交”)。单击()
并且您需要捕获
$('#form1')。提交(函数(){
并添加
返回false;
在关闭
}之前)
它帮助将isset设置为:
if(isset($\u POST['email'])
非常感谢!:-)如果我将按钮的输入类型更改为
是专门用于通过POST请求提交表单的。因为您的代码使用ajax发送数据,所以您完全绕过了表单提交过程,所以
在这里是无用的。只需使用普通按钮“或任何元素”注册click evetn和ajax函数即可。如果您按预期使用
,则不会使用ajax。好的。上面的代码确实注册并发布了正确的数据。但是如果我将表单放入do while循环,那么第二个按钮就不起作用。当我在第一个按钮仍在工作时单击它时,它甚至不会注册?为什么要将表单放入do while循环中?你想达到什么目标?
array (
  'name' => 'thisname',
  'email' => 'thisemail',
)
"Submit=Submit&" + $("#form1").serialize()