Для контекста: у меня есть домашняя страница (index.js), в которой есть панель поиска.Я пытаюсь использовать функцию автозаполнения jQuery, чтобы включить автозаполнение в этой строке поиска.Эта функция может принимать параметр массива для данных.
Как правильно запросить эти данные с сервера? и Как правильно хранить эти данные? Я ищу пример с конкретным синтаксисом для завершенияэта задача.
Я предполагаю, что сервер может обслуживать эти данные, когда клиент сначала делает запрос на страницу «index», а затем сохраняет эти данные в переменной для дальнейшего использования, но я не могузаставить это работать.
Вот мой код из index.js:
app.get('/showNames', function (req, res) {
var indexFile = require('./serverJS/page_index.js');
var promise = indexFile.getTitleArray();
promise.then(dataArray => {
console.log(dataArray);
res.send(dataArray);
})
});
Приведенный выше код записывает правильные данные в консоль.Тем не менее, кажется, что есть разрыв с моим кодом на стороне сервера (index.ejs):
<script>
$(function() {
var dataArray;
fetch('showNames')
.then(data => {
dataArray = data;
console.log(JSON.stringify(dataArray));
})
$( "#searchBox" )
.autocomplete({
minLength: 0,
source: function( request, response ) {
// delegate back to autocomplete, but extract the last term
response( $.ui.autocomplete.filter(
dataArray, extractLast( request.term ) ) );
}
})
})
</script>
Конечно, автозаполнение имеет больше кода, но я думаю, что это весь соответствующий код для моей проблемы.Когда я пытаюсь напечатать переменную "dataArray" на стороне сервера, я получаю {}.
Честно говоря, я даже не могу сказать, правильно ли я решаю эту проблему или я иду в правильном направлении.
Я не уверен, что имеет значение, поэтому я просто перечислю технологии, которые я использую.Я использую nodejs с express, ejs в качестве движка шаблонов и jsdom, чтобы включить jquery для файлов ejs.