我在一个asp项目上工作,我现在已经迁移到php。在asp中,我使用ajax脚本提交到数据库而不刷新页面。现在我在php中使用相同的ajax脚本,但它无法工作。当我在谷歌浏览器中打开控制台时,它也没有显示任何错误,但当我检查数据库时,我发现没有提交记录。
HTML AND AJAX
<!DOCTYPE html>
<html>
<head>
<script src="jquery/jquery.js"></script>
<script>
$(function(){
$("#form1").submit(function() {
$.post("insert.php", $(this).serialize(),function(data){
// I am done. The page returned by insert_db.php is now in data
} )
return false
})
})
</script>
</head>
<body>
<form method="post" id="form1">
<table>
<tr>
<td>firstname</td>
<td><input type="text" name="fname" id="fname"/></td>
</tr>
<tr>
<td>lastname</td>
<td><input type="text" name="lname" id="lname"/></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" id="submit" value="Submit" /></td>
</tr>
</table>
</form>
<table border="1">
</table>
</body>
</html>
PHP <?php require_once('Connections/connect.php'); ?>
<?php
if (isset($_POST['submit']))
{
include 'connections/connect.php';
$fname=$_POST['fname'] ;
$lname= $_POST['lname'] ;
mysql_query("INSERT INTO users(fname,lname) VALUES ('$fname','$lname')");
}
?>
连接字符串
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_connect= "localhost";
$database_connect = "speedapp";
$username_connect= "root";
$password_connect= "user2";
$connect= mysql_pconnect($hostname_connect, $username_connect, $password_connect) or trigger_error(mysql_error(),E_USER_ERROR);
?>
您没有选择DATABASE。在connect.php
$db = mysql_select_db($database_connect);
$(function(){
$("#form1").submit(function(event) {
event.preventDefault(); //prevent the form submission
$.post("insert.php", $(this).serialize(),function(data){
// I am done. The page returned by insert_db.php is now in data
} )
});
});
让你的js避免默认的submit动作:
$(function(){
$("#form1").submit(function(e){
e.preventDefault(); //prevent default
$.post("insert.php", $(this).serialize(),function(data){
// I am done. The page returned by insert_db.php is now in data
});
});
});
,你必须添加name="submit"
到你的输入提交标签:
<input type="submit" name="submit" id="submit" value="Submit"/>
并确保您的插入安全:
<?php
require_once('Connections/connect.php');
if (isset($_POST['submit'])){
include 'connections/connect.php';
$fname=mysql_real_escape_string($_POST['fname']);
$lname=mysql_real_escape_string($_POST['lname']);
mysql_query("INSERT INTO users(fname,lname) VALUES ('".$fname.",'".$lname."')");
}
?>
我建议你不要再使用mysql_*
了,因为它已经被弃用了,很快就会在最新版本的PHP中被删除
if (isset($_POST['submit']))
正在查找名称为submit
的输入。
将您的按钮更新为以下…
<td><input type="submit" name="submit" id="submit" value="Submit" /></td>
检查您的控制台以验证数据是否传递到正确的Url。此外,您没有在代码中的任何地方使用这个变量$database_connect。您需要选择正确的DB。
输入类型中缺少提交名称。如果没有它,您的代码将无法在if (isset($_POST['submit']))