微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将数据从服务器(nodejs)发送到客户端(ajax请求)

如何使用nodejs将数据从服务器发送到客户端?

所以基本上我通过单击按钮来调用函数

JavaScript

function createStuff(tid) {
    $.ajax({
        type: "POST",url: '/create/',data: {tid: tid}
        success: function(id) {
            doStuff(id);
        },error: function(jqXHR,textstatus,errorThrown) {
            alert('text status ' + textstatus + ',err ' + errorThrown);
        }
    });
};

然后处理请求

服务器

exports.create = function(req,res) {
    new Stuff({
        content: "random stuff"
    }).save(function(err,stuff) {
        Otherstuff.update({_id: req.body.tid},{$push: {stuffes: stuff}},{upsert: true},function(err,mvar) {
            res.redirect(301,'/' + req.body.tid);
        });
    });
};

但我需要使用res.redirect发送新创建的stuff._id.问题是我不想将它作为res.redirect(301,’/’req.body.tid’/’stuff._id)发送,因为我不得不做一个看起来不灵活的全新路由器.此外,当我执行此请求时,网页不会重新加载,这就像我想要的那样.

我尝试使用res.send(stuff._id),但我只能做一次(因为连接似乎在它之后关闭).我正在使用以下库:mongoose,jquery,express

解决方法

如果我理解正确,您希望使用您在请求中获得的原始ID以及新生成的ID回复客户端.
我不明白的是,如果你不想重页加载,你为什么要使用重定向

你可以简单地说,

var obj = {
    tid: req.body.tid,_id: stuff._id
};

res.send(JSON.stringify(obj));

并且,ajax成功处理程序将是

success: function(data) {
    var obj = JSON.parse(data);
    var id = obj._id;
    doStuff(id);
}

我想这就是你想要的.

编辑:

正如deitch指出的那样,express本身将对象转换为JSON字符串,并为JQuery添加Content-Type标头,以正确识别并将字符串解析为JSON对象.因此无需对数据进行字符串化和解析.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐