今天做畢設出現了這個問題
太長不看系列:返回的數據或字符串兩端有雙引號,雙引號爲字符串的一部分,導致與其它字符串使用==判斷時總是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語句
如果幫助到你了,點個贊讓更多人得到幫助