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

标签 javascript jquery ajax node.js

当我从 Ajax 调用中获取 nodejs 中的发布数据时,它可以显示在 console.log 中,但是当我想将其分配给另一个变量时,或者只需在页面上显示它就会变成[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) 显示它应该显示的内容。 toString() 没有帮助。

我该怎么办?

最佳答案

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仍然是一个对象。

关于javascript - 发布 Ajax 并在 Node 中获取空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26122812/

相关文章:

javascript - 使用 jQuery 存储数据的方式是否有优势?

javascript - jQuery - 使用发布数据重定向

php - 在 PHP 中对提交的 POST 数据使用 for 循环安全吗?

javascript - 将一个文本框的内容复制到另一个

javascript - 在 jQuery 中悬停后元素大小调整问题

javascript - Angular 服务在构造函数中调用子方法

android - Ajax 发布不工作 - Jquery Phonegap Android

javascript - 在 promise 中循环数组并将其作为参数传递给下一个 promise 后,如何在链接时返回一个值?

javascript - 未经确认不得删除对象

javascript - 如何在 Google Analytics 中记录 ajax 请求?