我正在制作一个简单的注册机制,将用户名和密码存储到 MySQL 数据库中。它是如何工作的:
- 用户在文本框中输入数据。
- 通过 JQuery 脚本获取值并进行验证。
- 如果验证通过,则会对 PHP 文件进行 Ajax 调用,然后检查用户名是否已被使用。如果它被占用,它会
回显“0”
。如果没有,它会回显“1”
并将值插入数据库。 然后 Jquery 检查响应并执行适当的操作。
$.ajax({ type: "POST", url: "register.php", data: {usn:us, pwd: pw}, cache: false, success: function(result){ console.log(result); if (result=='1'){ window.location = "next.php"; }else{ errorMessage= "Username taken. <br>"; $("#regerrormsg").html(errorMessage); } } });
PHP:
include 'dbconnect.php';
$us = $_POST["usn"];
$pw = $_POST["pwd"];
$tryus = $conn->query("SELECT Username from users WHERE Username='" . $us . "'");
if ($tryus->num_rows == 0){
echo '1';
$conn->query("INSERT INTO users (ID, Username, Password) VALUES (DEFAULT, '" . $us . "', '" . $pw . "')");
session_start();
$_SESSION["user"] = $us;
}else{
echo '0';
}
现在,奇怪的事情来了。除了一部分之外,这几乎是有效的。该查询确实检查用户名是否已存在,并且确实回显适当的值(“0”或“1”)。我已经通过将输出记录在 javascript 文件中对此进行了测试。我还检查了我的数据库,它从不存储重复的用户。但是,由于某些奇怪的原因, window.location = "next.php"
;即使输出值为“1”,也永远不会执行。它总是转到“else” block 。
知道为什么会发生这种情况吗?
谢谢。
最佳答案
关于javascript - 在 Ajax 中测试 PHP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47072389/