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

使用Ajax和JQuery从PHP文件获取数据,php,jquery,ajax,Php,Jquery,Ajax,我试图使用success函数(data)从我的php文件中获取数据 当我使用console.log(数据)时,我得到;真/假/存在 但是我不能做一个if声明,如果我做了,请不要警惕 这是我的js文件 function ajaxCall(username, email, password){ $.ajax({ type: 'POST', url: '../register.php', data: { 'username' : username,

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

?>

响应中可能有额外的空白

尝试:


答案中可能有额外的空格

尝试:


您没有用前面的答案进行响应,只是在php处理程序中回显“exist”这个词。 尝试使用
json\u encode
,因为数据类型默认为“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); 
 } 
}

您没有用前面的答案进行响应,只是在php处理程序中回显“exist”这个词。 尝试使用
json\u encode
,因为数据类型默认为“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); 
 } 
}

我认为使用404或403()之类的HTTP状态代码比重新调整字符串更好。这可以通过PHP()完成,并使用ajax调用的错误回调(->StatusCode)

我认为最好使用404或403()之类的HTTP状态代码,而不是重新调整字符串。这可以通过PHP()完成,并使用ajax调用的错误回调(->StatusCode)

使用正确的结构化数据格式,如json:

php:

JS


使用结构正确的数据格式,如json:

php:

JS



Allready试过了。。它没有起作用。。我是不是漏掉了什么?与数据类型“json”类似,文本将是默认值。您没有返回json数据,因此不需要编写jsonwrite console.debug(数据);如果im使用console.debug(数据),则在success和debug中使用console.debug;即使我随机输入了我知道数据库中不存在的不同用户/电子邮件和密码,我也会得到“存在”。@JonasAlvarson也会检查
数据的长度
,很可能不是6,因为你看不到空白。。它没有起作用。。我是不是漏掉了什么?与数据类型“json”类似,文本将是默认值。您没有返回json数据,因此不需要编写jsonwrite console.debug(数据);如果im使用console.debug(数据),则在success和debug中使用console.debug;即使我随机输入数据库中不存在的不同用户/电子邮件和密码,我也会得到“存在”。@JonasAlvarson也会检查
数据的长度
,很可能不是6,因为你看不出($.trim(data)工作得很好!但是我应该像@steve那样重新生成代码吗?如果($.trim(data))的话工作起来很有魅力!但是我是否应该像@steve那样重建我的代码?@charlietfl answer工作了!但是我是否应该像你那样重建我的代码?@JonasAlvarson这完全取决于你-但是如果你想将多个变量发送回javascript,那么json就是一种方式,所以你最好养成这个习惯。@JonasAlvarson我会的从长远来看,你会发现它更好,因为你以后可能会决定添加其他信息,而且添加其他信息也很简单property@charlietfl答案成功了!但我是否应该像你那样重建我的代码?@JonasAlvarson这完全取决于你——不过,如果你想向javas发送多个变量的话Script,然后json就是方法,所以你最好养成这个习惯。@JonasAlvarson我会使用json。从长远来看,你会发现它更好,因为你可能会决定以后添加其他信息,而且添加其他属性也很简单。很抱歉。是的,我会重写我的代码。谢谢你的帮助。真的很感激!你可能需要set选择适当的内容类型标题,并在适当的情况下使用布尔值而不是字符串。但是+1仍然是比回显字符串更好的选择,因此将两个答案结合起来,您将获得所需的内容,不要忘记
die()
正如Steve在他的回答中所发布的那样…@MancharyManchaary刚刚注意到您实际上没有输出json-
返回值
在这种情况下不起作用,您需要
回送
打印
响应。请编辑以备将来访问。我很抱歉。是的,我会稍微重写我的代码。谢谢您的帮助。非常感谢它!您可能需要设置一个适当的内容类型标题,并在适当的情况下使用布尔值而不是字符串。但是+1因为这仍然是一个比回显字符串更好的选项,将两个答案结合起来,您将得到您需要的,不要忘了
die()
正如Steve在他的回答中所发布的那样…@MancharyManchaary刚刚注意到您实际上没有输出json-
返回值
在这种情况下不起作用,您需要
回显
打印
响应。请编辑以备将来访问感谢帮助人员,非常感谢。($.trim(数据)完成了任务。但将使用更正确的结构化数据格式。无论如何,这是我在stackoverflow上的第一篇帖子,你们在这里帮助人们的人都很棒。这可能不是我在这里的最后一篇帖子;-)谢谢!谢谢你们的帮助,非常感谢。($.trim(数据)完成了任务。但将使用更正确的结构化数据格式。无论如何,这是我在stackoverflow上的第一篇帖子,你们这些在这里帮助人们的人都很棒。这可能不是我在这里的最后一篇帖子;-)现在谢谢!
$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();
$.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");
       }
});