2015-08-25 5 views
-2

У меня есть переменная в JavaScriptIndexOf() функция всегда возвращает ноль даже ту же строку

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".

Почему мой скрипт не работает, даже скрытый var содержит данные?

+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" начинается с 0-го индекса строки "class_code,other". Если строка не содержалась, она вернется -1

+0

Положите это в свой ответ https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf – azium

Смежные вопросы