Проблема заключается в моем кеше [term], когда я пытался добавить в него свою функцию $ .map, потому что она не нужна.
cache[term] = $.map(data, function(item) {
return {
label: item.NAME + (item.PRFNM ? ' (' + item.PRFNM + ')' : '') + ', ' + item.JOBTITLE,
value: item.NAME
};
});
Итак, вот мой последний скрипт для тех, ктовсе еще возникают проблемы: я также оставил все варианты, чтобы избежать путаницы.
var cache = {},
lastXhr;
$('#searchbox').autocomplete({
source: function(term, response) {
var term = term;
if (term in cache) {
response($.map(cache[term], function(item) {
return {
/*Format autocomplete to display name and job title, e.g., Smith, John, Web Developer*/
label: item.NAME + (item.PRFNM ? ' (' + item.PRFNM + ')' : '') + ', ' + item.JOBTITLE,
/*Replace the searched value with the value selected.*/
value: item.NAME
};
}))
/*I happened to leave this out, which I think what one of the main cause my caching did not work.*/
return;
}
lastXhr = $.getJSON( "getdata.php", request, function(data, status, xhr) {
cache[term] = data;
if (xhr === lastXhr) {
response($.map(data, function(item) {
return {
label: item.NAME + (item.PRFNM ? ' (' + item.PRFNM + ')' : '') + ', ' + item.JOBTITLE,
value: item.NAME
};
}));
}
});
}
});