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