2015-08-25 326 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

相关问题