1.场景。 做了一个ajax post数据的验证的功能。
$.ajax({
type: "POST",
url: url,
data: $("#sendForm").serialize(),
success: function(data) {
},
})
后端接收代码:
第一次点击post后验证是正常返回的,后面在重复点击就会报错: 服务器响应: 500 Can’t set headers after they are sent. 查了下是重复发送res.send了,不知道代码哪里有问题,求大神指点。
是不是你判断里面又写了res.send呢
前面res.send的地方加个return。 查查看有没有两个并行的异步方法同时res.send了。
@liuhuatao 判断就是我展开的那个邮箱参数的那个,emit了res.send.
@backcj 加了也是一样,下面的res.send应该跑不到,即使我溢出了下面的,同一个请求过来,还是500. 调试的,每次post过来都能emit到prop_err,但是就是会返回500那个错误。
可能是因为后面的执行的时候,执行了prop_err里面的操作,然后又执行了下面的那个res.staus(200).send()了
@jiangli373 我在所有调用的res.send的前面都console.log了不同的值,命令行里只显示了一个。不知道到底哪里重复了。
查到原因。用的eventproxy 做的流程控制,原生的直接res.send错误信息就不会报错了。不知道是不是eventproxy的原因。
这个问题我最近也遇到了哈哈,最后原因你会发现都是自己逻辑没有做好,最无脑的办法是,res.send之后,写一个
return;
两个res.send
表单验证不要放在后台做 很蛋疼的