我想使用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();
} ?>
非常感谢!!
答案 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()