Когда мы печатаем значение индекса внутри, если оно показывает правильный результат, но тот же индекс переменной при печати снаружи показывает значение 0 (первоначально назначенное значение). Я думаю, что есть некоторые проблемы с асинхронным поведением getJSON (не очень уверен). Может кто-нибудь сказать мне, что такое возможное решение?Значение не отражается назад
function get_build_id(query,node_file_name)
{
//alert(query);
flag = 0;
index = 0;
$.getJSON(node_file_name,function(data)
{
$.each(data,function(i,x)
{
index=index+1;
if (x.name.toLowerCase()==query.toLowerCase())
{
flag=1;
//alert("index2 "+index);
return false;
}
});
});
//alert("index is "+ index);
alert(flag);
if(flag==1)
return index;
else
return -1;
}
Christie @ Брэд
вновь сталкивается с той же проблемой. Ind значение дает правильный результат, но значение индекса всегда 0.
function get_build_id(query, node_fil_name, callback)
{
var ind = 0;
$.getJSON(node_fil_name, function(data)
{
$.each(data, function(i,x)
{
ind = ind + 1;
if (x.name.toLowerCase() == query.toLowerCase()){
callback(ind); // found match
return false;
}
});
callback(0); // no match found
});
}
function get_hash_val(roomno,room_file_name,node_file)
{
var flag=0,ind;
get_build_id(roomno,node_file, function(ind)
{
alert(ind);
index=ind;
});
alert(index);
if(index!=0)
return index;
else
return -1;
}
// get_hash_value вызывается другой функцией, в которой индекс должен быть возвращен
Ваша линия 'оповещения (флаг)' будет выполняться * перед * обратным вызовом, который вы передали '.getJSON', потому что' .getJSO N' является асинхронным. Итак, конечно, 'flag == 0', вы еще нигде не задали его. –