使用Ajax和JQuery从PHP文件获取数据

时间:2015-10-23 11:04:59

标签: php jquery ajax

我试图使用成功函数(数据)从我的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";
}

?>

5 个答案:

答案 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")