您好我是Node JS的新手,并试图了解客户端服务器通信的工作情况。
服务器上的文件 - (express.js)
app.post('/action', (req, res) => {
const status = action.doAction(req);
});
AJax Call on Client:
$.ajax({
type: 'POST',
url: '/action',
data: foo.getJSON(),
success: () => {
console.log('Action done');
}
});
我的ajax调用发送一个JSON数据,服务器端实现了一些执行进一步操作并返回true或false的函数。
但是在客户端控制台上取得成功并没有打印出来。另外,我想了解如何通过响应对象将数据(即状态)从服务器发送回客户端,以及如何在客户端接收和打印。此外,我想在完成doAction函数中的所有操作后打印成功,这需要大约2-4秒。 有人可以解释如何实现这一切吗?
答案 0 :(得分:1)
首先,你没有提供足够的代码供人们帮助你,这可能就是你已经投票的原因。我会给你一些指导,让你到达你需要去的地方,但如果你有进一步的麻烦,你需要发布所有代码并提出具体问题。
如果您希望操作需要时间,doAction应该使用回调或承诺,但我只能在不看代码的情况下猜测
在你的app.post中,你需要将数据发送回客户端(他们怎么会得到它?),这在Express文档中有相当清楚的记载:
app.post('/action', function(req, res){
const status = resultOf.action.doAction(req);
res.send(status);
});
答案 1 :(得分:0)
为了让你的代码运行,试试这个
app.post('/action', (req, res) => {
res.send('request done');
});
NodeJS是非阻塞的。所以你需要promises或async / await来处理doAction()