如何将Ajax响应转换为纯文本字符串?我有全局变量,并将ajax响应存储到该变量中,但当我将其与javascript字符串进行比较时,即使它们是相等的,它也会返回false。
下面是我的代码:
function checkUsn(){
var usn = document.getElementById("usn").value;
if(usn){
$.ajax({
type: 'post',
url: 'checkdata.php',
data: {
emp_username: usn,
},
success: function(response){
console.log(response);
myGlobalContainer.usn = response; //convert it to compare with string
$('#status').html(response);
}
});
}
}
在控制台中,当我在数据库中输入现有用户名时,它记录为OK。这个OK存储在myGlobalContainer.usn中,但是当我像下面的代码一样进行比较时,它返回false。
if(myGlobalContainer.usn == "OK"){
return true;
}else{
return false;
}
我将添加php文件。
<?php
header("Content-Type: text/plain");
include 'db_config.php';
$conn = new mysqli($db_servername, $db_username, $db_password, $db_name);
if(isset($_POST['emp_username'])){
$usn = $_POST['emp_username'];
$checkdata = "SELECT emp_username FROM emp_details where emp_username='$usn'";
$query = mysqli_query($conn, $checkdata);
if(mysqli_num_rows($query) > 0){
echo "OK";
}else{
echo "Your Username not exist";
}
exit();
}
if(isset($_POST['emp_pw']) && isset($_POST['emp_usn'])){
$pw = $_POST['emp_pw'];
$usn = $_POST['emp_usn'];
$get_pw = "SELECT emp_password FROM emp_details where emp_username='$usn'";
$query = mysqli_query($conn, $get_pw);
//$get_num_rows = mysqli_num_rows($query);
//echo $get_num_rows;
$row = mysqli_fetch_assoc($query);
//echo $row["emp_password"];
// check if password is match with username
if($pw == $row["emp_password"]){
echo "MATCH";
}else{
echo "Wrong password";
}
exit();
}
?>
请帮帮忙,谢谢!
发布于 2018-08-13 09:29:34
我已将我的代码更改为
success: function(response){
console.log(response);
myGlobalContainer.usn = response.trim(); //convert it to compare with string
$('#status').html(response);
它是有效的,但是伙计们,感谢你们的帮助,非常感谢!也多亏了这个问题Ajax response doesn't equal what I think it should
发布于 2018-08-11 18:08:45
默认情况下,jQuery的ajax
函数将确定它从Content-Type响应头接收的数据类型。
您可以使用dataType
参数覆盖它。
$.ajax({
dataType: "text",
// etc etc
});
…但是,由于响应似乎是"OK“,而不是HTML,因此您的PHP可能需要进行调整,以便输出正确的Content-Type:
<?php
header("Content-Type: text/plain"); # Override the default (text/html)
echo "OK";
因此,还要确保响应真的是简单的"OK“,并且您没有输出(例如) "OK”后跟一个新行。
发布于 2018-08-11 17:34:09
我觉得你应该在ajax success中使用函数。
var myGlobalContainer.usn = "";
function signAndCompare(str)
{
myGlobalContainer.usn = str
if(myGlobalContainer.usn == "OK")
{
console.log("true");
return true;
}
console.log("false");
return false;
}
function checkUsn(){
var usn = document.getElementById("usn").value;
if(usn){
$.ajax({
type: 'post',
url: 'checkdata.php',
data: {
emp_username: usn,
},
success: function(response){
console.log(response);
signAndCompare(response);//this line: **compare** and sign response
$('#status').html(response);
}
});
}
https://stackoverflow.com/questions/51798163
复制相似问题