我的html页面中有这个Select2:
<input class="users form-control" type="hidden" />
在我的js函数中,我这样做了:
$(".users").select2({
allowClear: true,
minimumInputLength: 3,
multiple:true,
ajax: {
data: function (term) {
return {
'q': term
};
},
results: function (data) {
return { results: data };
},
transport: function(queryParams) {
var params = {'term':queryParams.data.q};
console.log(params);
service.getUsersByQuery(params,function (data) {
return data;
});
}
}
});
我的服务是:
this.getUsersByQuery= function (criteria,callback){
$http({
url: url,
method: "POST",
data: criteria
}).success(function(data){
callback(data);
}).error(function(err){
console.error('Error: %s error: %O', 'failed.', err);
});
}
我的结果位于transport
,但我无法在processResult
中获得结果。我需要做些什么改变才能实现这个目标?
我正在使用Select2 3.4.5。
答案 0 :(得分:0)
您似乎有三个问题
ajax.results
代替ajax.processResults
。这解释了为什么你的方法永远不会被调用,它没有被正确命名。ajax.transport
方法设置不正确。您应该通过query.success
方法(以及query.error
中的错误)传回结果,以便Select2可以处理它们。所以,把所有这些放在一起......
$(".users").select2({
minimumInputLength: 3,
multiple: true,
ajax: {
data: function (term) {
return {
'q': term
};
},
results: function (data) {
return { results: data };
},
transport: function(queryParams) {
var params = {
'term': queryParams.data.q
};
console.log(params);
service.getUsersByQueru(params, function (data) {
queryParams.success(data);
});
}
}
});
假设从您的服务传回的data
格式正确,哪个应该可以正常工作。