对于上下文:我有一个带有搜索栏的主页(index.js)。我正在尝试使用jQuery的自动完成功能在此搜索栏上启用自动完成功能。此函数可以接受数据的数组参数。
如何正确地从服务器请求此数据?和如何正确地存储这些数据?我正在寻找具有具体语法的示例来完成此操作任务。
我认为,当客户端首先请求“索引”页面然后将数据存储到变量中以供以后使用时,服务器可以提供该数据,但是我似乎无法使其正常工作。
这是我来自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在ejs文件上启用jquery。