我尝试通过ajax,PHP和jquery插入数据,但是代码无法正常工作。任何人都可以帮助我哪里出了问题。甚至我也使用serialize()方法,但没有结果。
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<form id="myform">
<label>Username</label> <input name="name" type="text">
<label>Password</label> <input name="password" type="text">
<button type="submit" name="submit" id="submit">Save</button>
</form>
<script>
$(document).ready(function() {
$("#submit").click(function(event) {
event.preventDefault();
$.ajax({
url: "new.php",
type: 'POST',
data: $("#myform").serialize(),
success: function(data) {
alert(data);
$('form').trigger("reset");
}
});
});
});
</script>
</body>
</html>
这是new.php,表示另一个文件中的PHP代码。
<?php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', 'root');
define('DB_DATABASE', 'test');
$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
if(isset($_POST['submit'])) {
$username=$_POST['name'];
$password=$_POST['password'];
$sql="INSERT INTO ourteam(name, position) VALUES ('$username','$password')";
$result=mysqli_query($db,$sql);
?>
答案 0 :(得分:0)
您的问题是,此方法希望服务器响应,以便能够将数据存储为服务器响应。
success: function(data) {}
您可以通过使用echo将其输出来返回此数据,我们也将json_encode()
使JS能够理解输出。
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', 'root');
define('DB_DATABASE', 'test');
header('Content-Type: application/json'); # Declare what content type we are returning
$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
if(empty(array_diff(array('name', 'password'), array_keys($_POST)))) {
$stmt = $db->prepare('INSERT INTO ourteam(name, position) VALUES (?, ?)');
$stmt->bind_param('ss', $_POST['name'], $_POST['password']);
die(json_encode($stmt->execute())); # die() will halt the program here so no other instructions are executed
}
我更新了您的代码,以使用prepared statements来防止SQL Injections。