解决ajax成功返回text数据与字符串比较永远为false问题,且success中书写if语句失效问题。

今天做毕设出现了这个问题

太长不看系列:返回的数据或字符串两端有双引号,双引号为字符串的一部分,导致与其它字符串使用==判断时总是false。

详解:

首先问题背景是前端ajax发请求给后端,后端返回text的数据:如下

解决ajax成功返回text数据与字符串比较永远为false问题,且success中书写if语句失效问题。

text为字符串,返回可能为 字符串 like  或  dislike

当data为 like时       走 if 的第一个逻辑

当data苇 dislike 时 走 if 的第二个逻辑

但是事实却是永远走第二个。

因此console.log输出 data,得到如下结果

解决ajax成功返回text数据与字符串比较永远为false问题,且success中书写if语句失效问题。

这不和我想要比较的解决ajax成功返回text数据与字符串比较永远为false问题,且success中书写if语句失效问题。一样么!!!!为什么永远是false!!!!o(╥﹏╥)o

在这里我卡了半小时后!!!

我说把like也输出一下:

解决ajax成功返回text数据与字符串比较永远为false问题,且success中书写if语句失效问题。

见证奇迹的时刻!!!

得到如下结果:

解决ajax成功返回text数据与字符串比较永远为false问题,且success中书写if语句失效问题。哇 _(:з」∠)_  我踏马·····(ŎдŎ;)         (ŎдŎ;)       (ŎдŎ;)       (ŎдŎ;)      (ŎдŎ;)

懂了么!当你只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语句

如果帮助到你了,点个赞让更多人得到帮助