快速请求正文/查询为空

时间:2017-07-02 14:54:56

标签: node.js ajax express routes http-post

我几乎阅读了我能找到的所有帖子,而且他们没有解决我的问题。

我有:

var cors = require('./cors.js');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
  • 我设置了CORS以允许请求。
  • 我正在使用'Content-Type': 'application/json'
  • 发送POST请求

然而我的路线的请求对象仍然是空的。

如果我通过参数发送数据,它可以正常工作,但我真的更喜欢使用body。

请求代码:

data = {
    "url": "./text file name.txt",
    "body": "test content"
};

$.ajax({
    'type': 'POST',
    'Content-Type': 'application/json',
    'url': 'http://localhost:3000/save',
    'body': JSON.stringify(data),
    'success': function( response ){
        console.log( 'SUCCESS >>> ', response);
    },
    'error': function(error){
        console.log( 'ERROR >>> ', error.responseText );
    }
});

路线:

app.post('/save', function(request, response) {
    console.log( 'Save Req >> ', request.url, request.body, request.query );
    // outputs: "Save Req >>  /save {} {}"
});

CORS:(cors.js)

module.exports = function() {
  return function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header('Access-Control-Allow-Headers', 'Content-Type');
    res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
    next();
  };
}

1 个答案:

答案 0 :(得分:1)

根据$ .ajax,正在data传递正文中的数据,而不是body。喜欢这个

$.ajax({
  type: "POST",
  url: url,
  data: data,
  success: success,
  dataType: dataType
});