今天做毕设出现了这个问题
太长不看系列:返回的数据或字符串两端有双引号,双引号为字符串的一部分,导致与其它字符串使用==判断时总是false。
详解:
首先问题背景是前端ajax发请求给后端,后端返回text的数据:如下
text为字符串,返回可能为 字符串 like 或 dislike
当data为 like时 走 if 的第一个逻辑
当data苇 dislike 时 走 if 的第二个逻辑
但是事实却是永远走第二个。
因此console.log输出 data,得到如下结果
这不和我想要比较的一样么!!!!为什么永远是false!!!!o(╥﹏╥)o
在这里我卡了半小时后!!!
我说把like也输出一下:
见证奇迹的时刻!!!
得到如下结果:
哇 _(:з」∠)_ 我踏马·····(ŎдŎ;) (ŎдŎ;) (ŎдŎ;) (ŎдŎ;) (ŎдŎ;)
懂了么!当你只console.log输出data时 肯定发现不了为什么不相等,因为想不到双引号为字符串的一部分
答案就是 data字符串 "like" 两边的双引号是字符串的一部分!
字符串 ""like"" 与 字符串 "like" 使用== 结果肯定是false啊啊啊啊
解决方案:
在需要对比的字符串两边增加双引号
或
去掉data两边的双引号
如下:记得转义
if(data=="\"like\""){
这样就能使用ajax返回的数据与字符串对比了。
ps:看见也有人搜if语句判断无效,这算是XY问题了(百度XY问题),所以这里不是if语句判断失效,而是判断都得出false所以而且可能之后的else if语句都为false,导致会认为是if语句失效,我开始也是这样认为 ,以为是success里面不能书写if语句
如果帮助到你了,点个赞让更多人得到帮助