在 javascript 中执行 ajax 请求时出现奇怪的字符串比较

Weird string comparision when perforing ajax request in javascript

javascript 中有一个奇怪的问题。我正在使用 Jquery 对后端执行检查,以检查邮件是否已存在于数据库中。答案是对还是错。

问题是,如果答案为真,我得到数据变量包含 "true",但检查:

data == "true"

无论如何都失败了。该代码似乎以某种方式将 "true" == "true" 评估为 false.

success: function(data) {
    if (data == "true") {
        emailAlreadyIsUsed = true;
    } else {
        emailAlreadyIsUsed = false;
    }
}

有人知道这取决于什么吗?

我是javascript的开发新手,请问有调试的好方法吗?我在 chrome 中逐步执行了这段代码,检查了变量的值。

因为它不是字符串,尝试 data == trueif(data){... 应该可以。服务器端如何设置?

如果你想将字符串与其他字符串进行比较,你可以通过以下方式进行:

success: function(data) {
  emailAlreadyIsUsed = (data.indexOf('true') === 0);
}

但是你的代码不工作真的很奇怪。

你可以试试严格比较===

success: function(data) {
   if (data === "true") {
       emailAlreadyIsUsed = true;
   } else {
       emailAlreadyIsUsed = false;
   }
}

或者尝试比较两个字符串:

success: function(data) {
   if (String(data) === "true") {
       emailAlreadyIsUsed = true;
   } else {
       emailAlreadyIsUsed = false;
   }
}

感谢大家的回答。

我最终为完成这项工作所做的是将 dataType 更改为 "json"。然后变量 data 包含一个我可以正常使用的布尔变量。