提问人:sedric alonso 提问时间:9/22/2022 最后编辑:ADysonsedric alonso 更新时间:9/23/2022 访问量:43
Ajax 调用 PHP 文件,但某些数据不返回 [closed]
Ajax calls PHP file but some datas doesn't return [closed]
问:
返回“undone”或“error”。但是“完成”不会返回。 当邮件地址存在时,“撤消”返回,将新用户插入数据库有效,但“完成”不会返回。我希望在插入用户时看到 $data[“status”] 中的“undone”返回。我该如何解决?
js
$(document).ready(function(){
$("#form").submit(function(){
$.ajax({
url: "file.php",
type: "POST",
dataType: "json",
data: $('#form').serialize(),
success: function(data){
alert(data.status);
}
})
})
})
file.php
<?php
session_start();
if (isset($_POST['submit'])){
include 'config.php';
$data = array();
$name = $conn -> real_escape_string($_POST['username']);
$mail = $conn -> real_escape_string($_POST['mail']);
$psw = $conn -> real_escape_string($_POST['password']);
$code = $conn -> real_escape_string(uniqid());
$qry = $conn->query("SELECT * FROM member WHERE mail='{$mail}'");
if (mysqli_num_rows($qry)>0) {
$data["status"] = "undone";
}else {
$qry2 = $conn->prepare("INSERT INTO member (name, mail, psw, code) VALUES ('{$name}','{$mail}','{$psw}','{$code}')");
if($qry2){
$qry2->execute();
$_SESSION['SESSION_MAILADDRESS'] = $mail;
$data["status"] = "done";
mysqli_free_result($qry2);
}else {
$data["status"] = "error";
}
}
echo json_encode($data);
mysqli_free_result($qry);
$conn->close();
}
?>
答:
0赞
ADyson
9/23/2022
#1
您需要删除
mysqli_free_result($qry2);
从您的代码中。
根据 https://php.net/manual/en/mysqli-result.free.php 您应该将 mysqli 结果对象传递给该函数,但现在我仔细观察,您向它传递了一个 mysqli 语句对象。所以这应该会导致崩溃。我希望您的 AJAX 调用返回 500(内部服务器错误)状态和一条错误消息,正如我所描述的那样,该消息应该从浏览器的网络工具中可见。
在任何情况下,使用该命令在此上下文中都没有意义,因为您没有要释放的结果 - INSERT 查询不会生成结果集。mysqli_free_result
评论