在 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 == true
或 if(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 包含一个我可以正常使用的布尔变量。
javascript 中有一个奇怪的问题。我正在使用 Jquery 对后端执行检查,以检查邮件是否已存在于数据库中。答案是对还是错。
问题是,如果答案为真,我得到数据变量包含 "true",但检查:
data == "true"
无论如何都失败了。该代码似乎以某种方式将 "true" == "true" 评估为 false.
success: function(data) {
if (data == "true") {
emailAlreadyIsUsed = true;
} else {
emailAlreadyIsUsed = false;
}
}
有人知道这取决于什么吗?
我是javascript的开发新手,请问有调试的好方法吗?我在 chrome 中逐步执行了这段代码,检查了变量的值。
因为它不是字符串,尝试 data == true
或 if(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 包含一个我可以正常使用的布尔变量。