我正在构建所谓的“延迟加载”,其中新产品加载滚动。在我的Ajax(客户端)代码中,我想从服务器端与对象(locals.data)进行交互。 服务器端代码:
exports = module.exports = function(req, res) {
let view = new keystone.View(req, res);
let locals = res.locals;
locals.data = {
products: [],
categories: [],
sort: req.query.filterlist
};
.
. . (( querying code here ))
.
view.render('products');
客户端代码(ajax):
let currentPage = 1;
let filterList = data.sort; // <------ I would like to get this from server side!
function addNextPage(){
currentPage++;
let parameters = {
"page": currentPage,
"filterlist": filterList
};
$.get("/products", parameters, function(data) {
$(".products").append($(data).find('.products .items-box__item'));
});
}
基本上,我想与服务器端的整个locals.data对象进行交互。
我收到错误:
Uncaught ReferenceError: data is not defined
at loadmore.js:4
答案 0 :(得分:0)
我已经按照自己的特定方式完成了此操作。 在我的HTML(Nunjucks)模板中,添加了一个元素,用于在属性中存储数据:
<div class="variables" sort="{{data.sort}}"></div>
然后在我的客户端javascript中,我得到一个属性:
let filterList = document.querySelector('.variables').getAttribute('sort');