正しい結果が表示される場合は内側のインデックスの値を出力しますが、外側に出力すると同じ変数インデックスは値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;
}
@ブラッド・クリスティ
再び同じ問題に直面します。ind value は正しい結果を返しますが、index 値は常に 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 は、インデックスを返さなければならない別の関数によって呼び出されています