AJAX success接收后台返回值,明明是完全一样的字符串,在比对的时候却出现false的解决方法。

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没试过。

先留在这里以防自己以后再出错吧。。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值