最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

在Express响应中使用Javascript函数发送数据

运维笔记admin7浏览0评论

在Express响应中使用Javascript函数发送数据

在Express响应中使用Javascript函数发送数据

我想从我的Express服务器发送一个应用程序/ JavaScript响应,传递我从MongoDB获得的数据。

这是对在第三方网站中加载某些内容的呼吁的回应。

我已经创建了过程的所有不同部分,现在只需要将数据传递到Javascript响应中即可。

server.js

app.get('/', (req, res) => {
    productInfo(param1, param2, res)
}

productInfo.js-MongoDB调用

function productInfo(param1, param2, res){

    Product.find({key1: param1}, (err, docs) => {
    let idList = docs.idList;

    res.set('Content-Type', 'application/javascript');

    res.sendFile(__dirname + '/script.js', (err) => {
       if (err) { console.log(err) }
       else { console.log('file sent') }
    });
}

module.exports = productInfo;

script.js-发送自执行的匿名函数

(function(){
    // function - load jQuery & Bootstrap in 3rd party website

    $masterDiv = $(`
    <div>
    ...
    ... *data required*
    </div>
    `)

    $('body').append($masterDiv);

    // function - jquery event handlers where *data is required*
})();

当第三方网站页面上发生某些事件时,事件处理程序将更新正确的数据(id)。

如何将数据(idList)传递给script.js?

如果我在(function(){})()之前设置了虚拟全局变量数据,在script.js中插入一行,然后我就可以在函数中访问它。

我尝试使用res.render,但显示“找不到模块'js'”。

res.render(__dirname + '/scriptproduct.js', (err) => {});

  1. 我能以某种方式为script.js函数设置参数并使用res.send(functionName(idList))调用该函数吗?

  2. [我已经看到了使用res.render在html视图中发送模板的答案,但是在JS和HTML都需要数据的情况下,如何使用这种解决方案?

  3. 我还有许多其他路线未使用模板引擎。如果可以的话,我可以仅将其用于一条路线吗?

我对这一切非常陌生,基本上是在寻求解决方案。因此,我上面的一些问题可能是基本问题。

回答如下:

使用ejs,您可以将字符串传递到EJS模板或.js文件。但是,您只能传递字符串。您可以做的是使用JSON.stringify(obj)将对象作为字符串传递,然后使用JSON.parse(obj)将其转换回。

这里是另一个有一些代码并且可能会有所帮助的答案:How to include external .js file to ejs Node template page

发布评论

评论列表(0)

  1. 暂无评论