在Ajax中测试PHP响应
我正在制作一个简单的注册机制,将用户名和密码存储到MySQL数据库中。 怎么运行的:
echo '0'
。 如果不是,它会echo '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'块。 任何想法为什么发生这种情况? 谢谢。
检查后端响应的最好方法是使用REST Api客户端。 邮差是最流行的,但我更喜欢失眠。 尝试一下,在我看来,这是前端开发的必备条件。
请更改以下代码:
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';
}
对此:
if ($tryus->num_rows == 0){
$conn->query("INSERT INTO users (ID, Username, Password) VALUES (DEFAULT, '" . $us . "', '" . $pw . "')");
echo '1';
}else{
echo '0';
}
exit();
在next.php文件中创建变量会话。
更改window.location = "next.php";
to document.location.href="http://your-site-url.com/next.php";
上一篇: Testing PHP response in Ajax
下一篇: Can I test that a Sinatra post method successfully saves to a YAML store?