为什么我的循环返回3表示数组的长度,但回调函数searchKey(value).length
返回0?
function searchKey(value) {
if (value.length > 0) {
var keys = getKeys(value);// return array string
var arr = [];
$.post('@Url.Content("~/Home/GetJsonData")', {}, function (result) {
$.each(eval(result.replace(/[\r\n]/, "")), function (index, item) {
if (item.Tag != null) {
for (var i = 0; i < keys.length; i++) {
if (item.Tag.toLowerCase().indexOf(keys[i]) > -1) {
arr.push({
"Key": item.Key,
"Value": item.Tag,
"Tag": keys[i],
"Length": keys[i].length
});
alert("arr:" + arr.length);// result: 3
break;
}
}
}
});
}, "json");
}
alert("arr:" + arr.length);// result: 0
return arr;
}
function getKeys($param) {
//some code to find 'keys'
return keys;
}
答案 0 :(得分:0)
jquery post / get请求是异步的。你的函数发出post请求,完成,返回空数组,然后服务器的响应回到客户端。 你可以让它同步(https://stackoverflow.com/a/5821467/5206593),但这不是一个好主意,因为你的页面会很慢。