使用 Ajax 和 JQuery 从 PHP 文件中获取数据
Posted
技术标签:
【中文标题】使用 Ajax 和 JQuery 从 PHP 文件中获取数据【英文标题】:Getting data from PHP file using Ajax and JQuery 【发布时间】:2015-10-23 11:04:58 【问题描述】:我正在尝试使用成功函数(数据)从我的 php 文件中获取数据
当我使用 console.log(data) 时,我得到了;真/假/存在 但是我不能做一个 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";
?>
【问题讨论】:
感谢大家的帮助,非常感谢。 ($.trim(data) 完成了这项工作。但将使用更正确的结构化数据格式。无论如何,这是我在 *** 上的第一篇文章,你们帮助这里的人很棒。这可能不会是我在这里的最后一篇文章;-) 现在谢谢! 【参考方案1】:使用结构合理的数据格式,例如 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");
);
【讨论】:
@charlietfl 回答有效!但是我应该像你那样重建我的代码吗? @JonasAlvarson 这完全取决于您 - 但是,如果您想将多个变量发送回 javascript,那么 json 就是一种方式,所以您不妨养成这个习惯。 @JonasAlvarson 我会使用 json。从长远来看,您会发现它会更好,因为您可能会决定稍后添加其他信息,并且添加另一个属性很简单【参考方案2】:响应中可能有额外的空格
试试:
if($.trim(data) === "exists")
【讨论】:
if($.trim(data) 就像一个魅力!但我应该像@steve 那样重建我的代码吗?【参考方案3】:我认为最好使用 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/ --> StatusCode)
【讨论】:
【参考方案4】:你没有对前面的答案做出回应,你只是在你的 php 处理程序中回显“存在”这个词。
尝试使用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);
【讨论】:
对不起。是的,我有点重写我的代码。谢谢您的帮助。真的很感激! 您可能需要设置适当的内容类型标头,并在适当的情况下使用布尔值而不是字符串。但是 +1 因为这仍然是比回显字符串更好的选择 结合两个答案,你会得到你需要的,不要忘记史蒂夫在他的答案中发布的die()
...
@MancharyManchaary 刚刚注意到您实际上并没有输出 json - return
在这种情况下不起作用,您需要 echo
或 print
响应。请为未来的访问者编辑【参考方案5】:
if(data == "exists") instead of if(data === "exists")
【讨论】:
已经试过了..它没有做这项工作..我错过了什么吗?喜欢 dataType: 'json', 文本将是默认的。您没有返回 json 数据,因此无需编写 json 写console.debug(data);成功并在控制台中调试。 如果我使用 console.debug(data);即使我随机输入我知道数据库中不存在的不同用户/电子邮件和密码,我也会得到“存在”。 @JonasAlvarson 还会检查data
的长度,由于您看不到空格,它可能不是 6以上是关于使用 Ajax 和 JQuery 从 PHP 文件中获取数据的主要内容,如果未能解决你的问题,请参考以下文章
使用 ajax、jquery 和 PHP 从数据库更新图像不起作用
使用 jQuery 的 $.ajax( ) 函数从 php 文件中获取 JSON 数据不起作用