我面临着jquery自动完成问题,ajax数据作为源代码。返回的数据是正确的,并且不会发出任何错误。但结果仍未按预期显示。
我已经关注了与此问题相关的所有stackoverflow问题。一切都指向我所做的一切。所以这不是任何问题的重复。
如果我使用局部变量数据作为数据源,一切都按预期工作。它不是UI的问题,因为相同的代码用于局部变量和ajax数据。
我的代码是:
$("#dTSearch").autocomplete({
source: function( request, response ) {
$.ajax({
type: "POST",
url: "{{path('dataSearch')}}",
dataType: "json",
data: {
type: "dashboardType",
searchTerm: $("#dTSearch").val()
},
success: function (data) {
if(data.status == 200) {
console.log(data.data);
//response( data.data );
//var dataSet = $.parseJSON(data);
response($.map(data.data, function (item, i) {
//alert(item.value);
return {
id: item.id,
label: item.label,
value: item.value
};
})
);
}
},
error: function (data) {
alert('error!');
console.log(data);
}
});
},
minLength: 3,
select: function( event, ui ) {
alert(ui.item.value);
return false;
},
open: function() {
$(this).autocomplete('widget').css('z-index', 100);
return false;
}
});
$("#dTSearch1").autocomplete({
source: dashboardTypes,
minLength: 3,
select: function( event, ui ) {
$("#onlyFunctionalDiv").show();
},
open: function() {
//$( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
$(this).autocomplete('widget').css('z-index', 100);
return false;
}
});
我在“Response”方法中使用了直接“响应”方法和“Map”。似乎没有什么工作。
当我安慰结果并提出警报时,一切似乎都没问题。
下图显示了我使用的结果和控制台日志。
在第一张图片中,源是局部变量,它在用户开始输入时显示结果。下面是同一局部变量的控制台日志。
第二张图片是ajax响应。当用户键入“func”时,它正在调用ajax并且响应正在打印。但结果并没有按照应有的方式显示。绿色框表示局部变量的响应,红色框表示ajax响应数据。两者似乎都是一样的。但是缺少某些东西,并且在结果集可用时它没有显示结果。
有人可以帮助我,这有什么不对吗?
问题已解决。问题是落后的分号“;”在响应方法的return语句的末尾。
代码的变化是:
response($.map(data.data, function (item, i) {
//alert(item.value);
return {
id: item.id,
label: item.label,
value: item.value
}
})
);
我在return语句的末尾删除了尾部分号。