我试图使用成功函数(数据)从我的php文件中获取数据
当我使用console.log(数据)时,我得到;真/假/存在 但我不能发表一个if声明,如果我做的那么警惕!!
继承我的js文件
function ajaxCall(username, email, password){
$.ajax({
type: 'POST',
url: '../register.php',
data: {
'username' : username,
'email' : email,
'password' : password,
},
success: function(data) {
if(data === "exists")
alert("user exists");
}
});
}
继承我的.php文件
<?php
$servername = "#";
$username = "#";
$password = "#";
$dbname = "#";
$regusername = $_POST['username'];
$email = $_POST['email'];
$regpassword = $_POST['password'];
$mysqli = new mysqli($servername, $username, $password, $dbname);
$selectQuery = "SELECT username FROM users WHERE username = '$regusername'";
$select = $mysqli->query($selectQuery);
// var_dump($select->num_rows);
if( $select->num_rows == 0) {
$insertQuery = "INSERT INTO users (username, password, email) VALUES ('$regusername','$regpassword','$email');";
$insert = $mysqli->query($insertQuery);
if( $insert == true) {
echo "true";
}else {
echo "false";
}
}else {
echo "exists";
}
?>
答案 0 :(得分:2)
使用结构合理的数据格式,例如json:
PHP:
$data=['exists'=>false];
if( $select->num_rows == 0) {
$insertQuery = "INSERT INTO users (username, password, email) VALUES ('$regusername','$regpassword','$email');";
$data['inserted'] = (bool) $mysqli->query($insertQuery);
}else {
$data['exists']=true;
}
header('Content-Type: application/json');
echo json_encode($data);
die();
JS
$.ajax({
type: 'POST',
url: '../register.php',
data: {
'username' : username,
'email' : email,
'password' : password,
},
success: function(data) {
if(data.exists){
alert("user exists");
}elseif(data.inserted){
alert("inserted");
}else{
alert("did not insert");
}
});
答案 1 :(得分:1)
回复中有可能有额外的空白
尝试:
if($.trim(data) === "exists")
答案 2 :(得分:1)
你没有回答前面的答案,你只是回应你的php处理程序中的'exists'字样。
尝试使用json_encode
,因为默认情况下dataType为“json”而不是“html”
让我们说
if($insert) {
$response['exist_status'] = 'exist'
}else{
$response['exist_status'] = 'do not exist'
}
echo json_encode($response);
在jquery
success: function(response) {
if(response.exist_status && response.exist_status == 'exist') {
alert(1);
}
}
答案 3 :(得分:1)
我认为最好使用404-403(https://en.wikipedia.org/wiki/List_of_HTTP_status_codes)等HTTP状态代码,而不是重新调整字符串。这可以通过PHP(http://php.net/manual/de/function.http-response-code.php)完成并使用您的ajax调用的错误回调(http://api.jquery.com/jquery.ajax/ - &gt; StatusCode)
答案 4 :(得分:-1)
if(data == "exists") instead of if(data === "exists")