如何使用nodejs将数据从服务器发送到客户端?
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] 举报,一经查实,本站将立刻删除。