0
我有一個像下面這樣的自動完成代碼。它從ajax成功獲得正確的響應,但是我不能在它下面的grep函數上使用響應變量。它說它沒有定義。如果我要使用全局變量,這種情況也是有效的。我怎樣才能讓它看到響應變量?自動完成的JavaScript變量範圍
$(".skl").autocomplete({
source: function(req, responseFn)
{
var re = $.ui.autocomplete.escapeRegex(req.term);
var matcher = new RegExp("^" + re, "i");
var matcher2 = new RegExp(" " + re, "i");
$.ajax({
type: 'POST',
url: "http://somepage",
data: { skillType: 1, skillName: re},
success: function(response){
console.log(response);
}
});
var a = $.grep(availableTags, function(item,index){
return matcher.test((item)) || matcher2.test(item);
});
//var results = $.ui.autocomplete.filter(availableTags, req.term);
responseFn(a.slice(0,5));
},
minLength: 1,
autoFocus: true
});
Ajax是異步的,所以您必須等待數據返回才能使用它。 – adeneo
我只是在grep使用它之前添加了一個sleep函數來等待5秒鐘。沒有改變。 – gzg