使用Ajax和JQuery从PHP文件获取数据
我试图使用success函数(data)从我的php文件中获取数据 当我使用console.log(数据)时,我得到;真/假/存在 但是我不能做一个if声明,如果我做了,请不要警惕 这是我的js文件使用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,
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");
}
});