我想使用php服务和json将数据插入mysql数据库,但当我单击"不发生任何事情"时,它显示没有错误,没有消息,数据也没有添加到数据库中。请帮助这是保存功能
function save(){
var eml = document.getElementById("tbemail").value;
var mp = document.getElementById("tbmdp").value;
var data = {email: eml, mdp: mp}
$.ajax({
url:"http://localhost:800/test/insert.php",
type: 'POST',
data: data,
dataType: 'json',
success: function()
{alert("success");}
error: function()
{alert("fail");}
});
}
这是我的php文件插入.php
<?php
$json = $_POST['data'];
$new=json_decode($json, true);
$conn= mysqli_connect("localhost","root","") or die ("could not connect to mysql");
mysqli_select_db($conn,"bd") or die ("no database");
$sql = "INSERT INTO user (email,mdp) VALUES ($new['email'],$new['mdp'])";
if (mysqli_query($conn, $sql)) {
echo "created ";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
?>
您的$_POST数组中没有"数据"键,您有"电子邮件"answers"mdp",可以直接访问:
$email = mysqli_real_escape_string($_POST['email']);
$mdp = mysqli_real_escape_string($_POST['mdp']);
没有json以这种方式传递,类似地,当你得到字符串时,你也不需要解析它。打开错误报告,你会看到$_POST['data']是未定义的。
顺便说一句,使用mysqli_real_escape_string对输入进行消毒以防止注入。
"Insert.php"
->不用于获取数据$json = $_POST['data'];
只使用这个并尝试
$conn= mysqli_connect("localhost","root","") or die ("could not connect to mysql");
mysqli_select_db($conn,"bd") or die ("no database");
$email = $_POST['email'];
$mdp = $_POST['mdp'];
$new1 = json_encode($email);
$new2 = json_encode($mdp);
$sql = "INSERT INTO user ('email','mdp') VALUES ('".$new1."','".$new2."')";
$insert = mysqli_query($sql);
if ($insert) {
echo "created ";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
您的PHP代码似乎是正确的,但请尝试以下jQuery AJAX代码:
function save(){
var eml = document.getElementById("tbemail").value;
var mp = document.getElementById("tbmdp").value;
var data = {email: eml, mdp: mp}
$.ajax({
url: "http://localhost:800/test/insert.php",
type: 'POST',
dataType: 'json',
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
error: function () {
alert('fail');
},
success: function (data) {
alert('success');
}
});
}
在您的数据部分必须作为JSON字符串传递,其次您错过了包含数据contentType
。这里的内容类型设置为application/json
,因此将数据作为JSON字符串传递。