Работает!
Даже с 100 000 записей, против которых я опрашиваю. Скорость возврата до 30 мс. Я даже увеличил размер базы данных до 500 000 записей, и скорости автоматического предложения очень приемлемы (все еще меньше 120 мс). Я уверен, что смогу сделать еще лучше с небольшим кэшированием на стороне PHP.
Я использовал QueryReadStore и FilteringSelect . JsonRestStore , вероятно, сработало бы, но я нашел простой рабочий пример с сайта додзё и построил из него.
Вот рабочий код DOJO для текстового поля с автоматическим предложением, попадающего в очень большой набор данных - short and sweet :
var vendorStore = new dojox.data.QueryReadStore({
url: "../vms/htdocs/ajax/search.php"
});
var vendorSelect = new dijit.form.FilteringSelect({
name: "vendorSelection",
store: vendorStore,
autoComplete: false,
required: true,
labelType: "text",
placeHolder: "Search vendors",
pageSize: 20,
hasDownArrow: false,
style: "width: 175px;",
searchAttr: "company_name",
id: "vendorSelect"
},
"vendorSelection");
vendorSelect.startup();
Конечно, вставьте <select id="vendorSelection"></select>
где-то в теле страницы. Прекрасно работает.
Еще раз спасибо!