ExpressJS将对象传递给客户端(ajax)

时间:2018-06-19 10:42:13

标签: node.js ajax express keystone

我正在构建所谓的“延迟加载”,其中新产品加载滚动。在我的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

1 个答案:

答案 0 :(得分:0)

我已经按照自己的特定方式完成了此操作。 在我的HTML(Nunjucks)模板中,添加了一个元素,用于在属性中存储数据:

<div class="variables" sort="{{data.sort}}"></div>

然后在我的客户端javascript中,我得到一个属性:

let filterList = document.querySelector('.variables').getAttribute('sort');