在JQuery中比较两个相同的字符串会返回false
Comparing two identical strings in JQuery returns false
我发现了一个有趣的问题,JQuery的AJAX请求中有一个回显值,我没有答案:
我的data == "LOCKED"
永远不会返回true(第13行)!
JQuery->AJAX调用按钮点击:
$.ajax({
url: "ajax/login_ajax_call.php",
method: "POST",
data: { user: usr, password: pwd }
}).done(function(data){
if(data == true || data == "true"){ // -> this works with data beeing true (bool) or "true" (string)
$("#form_submit").submit();
}
else{
console.log(jQuery.type(data)); // -> (string)
console.log(data); // -> "LOCKED"
console.log(jQuery.type("LOCKED")); // -> (string)
if(data == "LOCKED"){ // also tried "===" but it never returns true
[...]
}
else{
[...]
}
}
});
});
PHP(1)->获取类(PHP(2))返回的值:
include_once("../Classes/Login_check.php");
$lih = new Login_check();
$result = $lih -> check($_POST["user"], $_POST["password"]);
var_dump($result); // -> string(6) "LOCKED"
echo $result;
PHP(2,"Login_check.PHP"):
[...]
// also tried:
// $test = "LOCKED";
// var_dump($test); // -> string(6) "LOCKED"
// return $test;
return "LOCKED";
[...]
如果你需要更多信息,请告诉我!我希望任何人都知道这个问题的原因!
一定是因为一些空白或新行,所以最好修剪data
。试试这个:
if (data.trim() == "LOCKED") {
您也可以使用:
if ($.trim(data) == "LOCKED") { // using jQuery.
您可以尝试JSON.parse
。若值在控制台上看起来像"LOCKED"
,则表示它像""LOCKED""
。
编辑1
如前所述,您将"'r'nLOCKED"
作为字符串化值,因此您可以使用正则表达式来替换它。
参考-如何删除字符串中的所有换行符?
样品
var a = "LOCKED";
var strA = "'r'nLOCKED";
var regex = /'r?'n|'r/g;
var cleanStr = strA.replace(regex,'');
console.log(a);
console.log(strA);
console.log(strA == a);
console.log(cleanStr == a);
可能是由于某个地方的空白,例如打开php标签之前的空格等。
最好使用json这样的结构化数据格式,并返回布尔属性来避免这些问题:
$result = $lih -> check($_POST["user"], $_POST["password"]);
$locked = ($result == 'LOCKED');
header('Content-Type: application/json');
echo json_encode(['locked'=>$locked]);
Javascript:
if(data.locked){
相关文章:
- gulp Iconify任务抛出错误TypeError:Path必须是字符串.收到false
- PHP strtotime()为JavaScript日期字符串返回false
- 字符串对象比较总是返回false
- 函数:根据字符串中是否存在子字符串返回 True/False
- 如果 HTML 标记仅存在于字符串的开头,则返回 false
- 如何转换“;“错误”;字符串转换为布尔值false
- 如何将对正在定义或未定义的变量的检查强制转换为读取True或False的字符串
- JavaScript字符串解析为false
- 如果上一个字符串为true,则返回false,否则为true-javascript
- 在javascript中,是一个空字符串,作为布尔值总是为false
- 当regex匹配测试字符串时,Javascript .test要么不返回任何值,要么返回false
- 字符串 '0' 在 javaScript 中为 true|false
- 相等字符串比较返回false
- 使用JavaScript将字符串转换为布尔值总是给出false
- 当使用JSON时,如何检查false.对空用户输入进行字符串化
- 空字符串在javascript中被视为false
- 为什么空字符串字面量在javascript中计算为false ?
- 列表中的Javascript字符串返回false
- Javascript:奇怪的行为' empty string '和' false '返回空字符串
- 比较两个外观相同的字符串时返回false