我在这个问题上阅读了很多帖子,但我无法解决问题 . 似乎ajax()工作正常,但.php文件无法更新SQL数据库并且没有向ajax()函数返回任何结果 .
这是我的代码:
var datastring=JSON.stringify(utnew)
$.ajax({
type: "POST",
url: "myulr-php",
data: datastring,
dataType: "json",
success: function(resto){
if (resto=="success"){
$("#pop-confermadatiuser").html("OK");
}else{
$("#pop-confermadatiuser").html("KO");
};
}
});
PHP代码工作,我试过 . 这是代码:
header("Access-Control-Allow-Origin: *");
$con = mysqli_connect("sql","xxx","xxx","xxx") or die ("could not connect database");
$ck=1 ;
if(isset($_POST['id']))
{
$id=$_POST['id'];
$nome=$_POST['nome'];
$cognome=$_POST['cognome'];
$matricola=$_POST['matricola'];
$mail=$_POST['mail'];
$password=$_POST['password'];
$ck=2
$qry="UPDATE user SET nome='".$nome."', cognome='".$cognome."', mail='".$mail."', password='".$password."' where id=".$id." and matricola=".$matricola;
$q=mysqli_query($con,$qry);
if($q) {
echo "success";
} else {
echo "error";
};
mysqli_close($con);
};
if(ck==1){
echo "error2";
};
1 回答
jQuery代码将POST数据作为JSON字符串发送,但您的PHP代码正在寻找标准键值对 .
您可以将Ajax调用更改为以键值格式发送 . 我无法在您的代码中看到
utnew
引用的内容,通常是Javascript对象或使用$.serialize()
序列化HTML表单的结果:或者,您可以更改PHP端以期望POST有效内容中的JSON编码字符串,而不是编码的键值对:
无论你选择哪个,你遇到的问题是Ajax调用发送一个JSON编码的字符串作为POST有效负载,但PHP期望
$_POST
中的键值对 .jQuery
$.ajax
的"json"
数据类型参数或快捷方法$.post
告诉jQuery期望返回值的格式,因此您的PHP代码应返回JSON编码的字符串 . 你的PHP代码发送回一个普通的字符串,所以你应该告诉jQuery期望:$.post(url, data, "text")
或让PHP发送回适当的JSON编码对象:
echo json_encode(["result" => "success"]);
如果你有PHP错误登录(你应该)到一个文件,你可以使用
error_log
调试你的API endpoints ,即error_log(print_r($_POST,1));
会给你一些线索 .