JS比较两个字符串的问题。
原本是一件很简单的事情,无非就是
if (a==b)
这种问题。出现比较不了的情况后台最多也就是用一个
if (a.equals(b))
去解决。但JS没有啊,JS就只有
if (a == b)
或者
if (a === b)
有时候就会出现完全一样的字符串却比对出false的结果。
success: function(result)
{
console.log(result); //控制台输出返回值
if(result == "true")
{
layer.msg('已删除!',{icon:1,time:2000});
//发异步删除数据
$(obj).parents("tr").remove();
}
}
如上,,后台的返回值手动返回字符串“true”,比对之前,由控制台先输出看看对不对。
输出的确实是true,是没问题的。
但是比对的结果是false,我就特别纳闷为什么会这样?难不成字符串多了空格或者我看不到的东西?
于是我用上了去空格,去前后斜杠,去换行符等方式。均无效。
也用上了传说中的三个等号大法,同样比对false。
后来想到了是不是类型不一样比不了。
type: "POST",
url: "member/delete",
data: {id:id},
dataType: "json",
因为请求的时候用的JSON字符串所以出现玄学错误?
但是改成text也同样比对出false的结果。
难不成是比所在地址?
于是我改了一下
success: function(result)
{
if(result.toString() == "1")
}
发现比对字符串“1”是能够成功比对并返回true的。
几经思考觉得用用数字字符串代替原本的true确实是好办法,但不想就这样过了。
于是又开始一些尝试。
最后停在了toString这里。。。。。。。最原始的方法没试过。结果居然过了。。
success: function(result)
{
console.log(result); //控制台输出返回值
if(result.toString() == "true")
{
layer.msg('已删除!',{icon:1,time:2000});
//发异步删除数据
$(obj).parents("tr").remove();
}
}
比对结果是true,差点傻了。试过了各种方法维唯独就是toString没试过。
先留在这里以防自己以后再出错吧。。