发布Ajax并在Node中获取空对象

时间:2014-09-30 14:02:18

标签: javascript jquery ajax node.js

当我从Ajax调用中获取nodejs中的发布数据时,它可以显示在console.log中,但是当我想将其分配给另一个变量时,或者只是在页面上显示时,它会转到{ {1}}。 为什么这样?

[object, object]

$.ajax({
    type: "POST",
    url: 'http://127.0.0.1:5075/testEditmode.html',
    'Content-Type': 'application/x-www-form-urlencoded',
    data: info2value + '|' + colorvalue + '|' 
});

var express = require('express'); var app = express(); var bodyParser = require('body-parser') app.use(express.json()); app.use(bodyParser.urlencoded({ extended: true })); app.post('/testEditmode.html', function (req, res) { // console.log(req.body); requestData = ''; requestData += req.body; console.log(requestData.toString()); // console.log(req.body); var splited = requestData.split("|"); var splitedCoords = requestData.split(","); Request data = [object, object]显示应该显示的内容。 console.log(req.body)没有帮助。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

jQuery请求中的命名空间data

$.ajax({
  type: "POST",
  json: true, // added this
  url: 'http://127.0.0.1:5075/testEditmode.html',
  'Content-Type': 'application/x-www-form-urlencoded',
  data: {infoValue: info2value + '|' + colorvalue + '|'}
});

然后你可以这样做:

requestData = '';
requestData += req.body.infoValue;

如果你使用body-parser中间件,你告诉express要解析请求的正文,现在req.body是一个对象,所以你实际上在做:

var requestData = '' + {}; // "[object Object]" - Same as obj.toString()

并没有真正改变req.body,这就是为什么req.body仍然是一个对象。