express应用$.ajax()请求 会报错请求头重复?

express 应用$.ajax()请求,会报错Can't set headers after they are sent.

  • app.js

var express = require('express');
var app = express();
var userDao  = require('./dao/userDao');
app.post('/addUSer',userDao.add);
  • dao/userDao.js

var mysql = require('mysql');
var $conf = require('../conf/db');
var $util = require('../util/util')
var $sql = require('./userMapping');

var pool = mysql.createPool($util.extend({},$conf.mysql));

var jsonWrite = function(res,ret){
    if(typeof ret === 'undefined'){
        res.json({
            code:'1',
            msg:'操作失败'
        })
    }else{
        res.json(ret)
    }
};
module.exports= {
    add:function(req,res,next){
        pool.getConnection(function(err,connection){
            // 获取传来的数据
            console.log(req.body)
            var param = req.query || req.params;
            // 向表里插值
            connection.query($sql.insert,[param.username,param.password,param.citycode],function(err,result){
                if(result) {
                    result = {
                        code: 200,
                        msg:'增加成功'
                    };
                }
                // 以json形式,把操作结果返回给前台页面
                jsonWrite(res, result);
                // 释放连接
                connection.release();
            })
        })
    }
}
  • ajax

            $('#queryUser').click(function(event) {
                /* Act on the event */
                $.ajax({
                    url:'/addUser',
                    type:'POST',
                    dataType: "json",
                    data:{
                        'username':'aaa',
                        'password':'20170217',
                        'citycode':'024'
                    },
                    success:function(data){
                        console.log(data);
                    }
                })
            });

点击按钮发送ajax请求后,会报错,但是会走ajax中的success,返回data为操作失败

  • 报错信息

Error: Can't set headers after they are sent.
阅读 2.7k
2 个回答

post发送的请求,不使用bodyParser中间件,能解析出请求的数据?

这个错误是说你一个请求发了两次res,你检查一下自己代码吧。多用return res.send();

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题