2015-08-25 378 views
-2

我有一個變量在JavaScript的indexOf()函數返回值總是爲零,即使有相同的字符串

var hidden = "class_code,other"; 

然後我有阿賈克斯其返回值

$.ajax({ 
type: "post", 
data: $("#myform").serialize, 
success: function(data){ 
    if(hidden.indexOf(data)){ 
    //mycode here 
} 
} 
}); 

,但它不工作,所以我嘗試使用alert()來打印hidden.indexOf(data),它總是返回,所以我嘗試提醒數據,它返回"class_code"

爲什麼我的腳本不工作,即使隱藏的變量包含數據?

+1

它正在工作。 'class_code'開始的索引位置是0.你期待什麼? – azium

+0

零並不意味着它不工作,零告訴你「隱藏」變量中「數據」變量的位置。 – murnax

+0

我們不知道你正在接收什麼數據,在你的成功函數'console.log(JSON.stringify(data))'中試試這個,並檢查控制檯。 您可能必須在返回的數據中使用某個字段,而不是數據對象本身。 – Felix

回答

1

indexOf返回匹配字符串開頭的位置。由於class_code位於class_code,other的開頭,因此爲0。當找不到字符串時,它將返回-1。測試字符串是否正確的方法是:

if (hidden.indexOf(data) != -1) 
+0

哦謝謝,我不知道這個,我在想,0是假的 – Mentiong

+0

顯然。這是'indexOf'常見的錯誤。 – Barmar

1

.indexOf正在工作 - 字符串"class_code"從字符串"class_code,other"的第0個索引處開始。如果字符串不包含,則返回-1

+0

把這個在你的答案https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf – azium

相關問題