AJAX将JSON从javascript发布到nodejs服务器

AJAX将JSON从javascript发布到nodejs服务器,javascript,json,ajax,node.js,Javascript,Json,Ajax,Node.js,我正在尝试将JSON对象从javaScript发送到node.js服务器。我使用标准XMLHttpRequest从javascript和标准node.js代码发送它 两个代码似乎正常通信,但是node.js总是给我一个空的JSON对象。我真的不确定我做错了什么 这是我的javascript代码: 函数xhrPost{ var data={name:John,time:2pm}; var xhr=新的XMLHttpRequest; xhr.withCredentials=true; xhr.add

我正在尝试将JSON对象从javaScript发送到node.js服务器。我使用标准XMLHttpRequest从javascript和标准node.js代码发送它

两个代码似乎正常通信,但是node.js总是给我一个空的JSON对象。我真的不确定我做错了什么

这是我的javascript代码:

函数xhrPost{ var data={name:John,time:2pm}; var xhr=新的XMLHttpRequest; xhr.withCredentials=true; xhr.addEventListenerreadystatechange,函数{ 如果this.readyState==4{ console.logthis.responseText; } }; xhr.openPOST,http://[serverIP]:8080/addUser; xhr.setRequestHeadercache-control,无缓存; xhr.setRequestHeadercontent-type,application/json;charset=UTF-8; xhr.sendJSON.stringifydata; } 这是我的node.js代码:

var express = require("express");
var myParser = require("body-parser");
var app = express();

  app.use(myParser.urlencoded({extended : true}));
  app.post("/addUser", function(request, response) {
      console.log(request.body); // this line allways produce {}
      response.send("Message received.");
      response.end();
});

app.listen(8080);
您必须使用myParser.json作为中间件。有关它的更多信息,请参见

您必须使用myParser.json作为中间件。请参见下一行后面的

中的更多信息:

var myParser = require("body-parser");
您应该添加更多行,如下所示:

 var myParser = require("body-parser");

app.use(myParser.json());// parse application/json
在以下行之后:

var myParser = require("body-parser");
您应该添加更多行,如下所示:

 var myParser = require("body-parser");

app.use(myParser.json());// parse application/json

这也是解决我的问题最有帮助的stackoverflow页面

我试图获取表单字段,在客户端将它们格式化为JSON,然后发送到服务器,使用这些字段调用单独的数据库MySQL

Object {name: "", reps: "1", weight: "1", date: "", lbs: "0"}
我能够在客户机上正确地记录对象,但每次我尝试将数据发送到服务器时

console.log(req.body);
将始终在服务器上作为

{}
undefined
服务器端我的设置和功能数据传递是

var express = require('express');
var mysql = require('./dbcon.js');
var app = express();
var handlebars = require('express-handlebars').create({defaultLayout:'main'});
var request = require('request');
var myParser = require("body-parser");
var async = require('async');
app.set('view engine', 'handlebars');
app.set('port', Number(process.env.PORT || 3000));
app.use(myParser.json());
app.use(express.static('public'));
app.engine('handlebars', handlebars.engine);
在我的客户端js文件中,我在表单提交时有一个函数,用于:

var data = {
  "name":document.getElementById("fname").value,
  "reps":document.getElementById("freps").value,
  "weight":document.getElementById("fweight").value,
  "date":document.getElementById("fdate").value,
  "lbs":bool
};
...
req.open("POST", "/insert", true);
req.setRequestHeader("content-type", "application/json;charset=UTF-8");
...
req.send(JSON.stringify(data));

这也是解决我的问题最有帮助的stackoverflow页面

我试图获取表单字段,在客户端将它们格式化为JSON,然后发送到服务器,使用这些字段调用单独的数据库MySQL

Object {name: "", reps: "1", weight: "1", date: "", lbs: "0"}
我能够在客户机上正确地记录对象,但每次我尝试将数据发送到服务器时

console.log(req.body);
将始终在服务器上作为

{}
undefined
服务器端我的设置和功能数据传递是

var express = require('express');
var mysql = require('./dbcon.js');
var app = express();
var handlebars = require('express-handlebars').create({defaultLayout:'main'});
var request = require('request');
var myParser = require("body-parser");
var async = require('async');
app.set('view engine', 'handlebars');
app.set('port', Number(process.env.PORT || 3000));
app.use(myParser.json());
app.use(express.static('public'));
app.engine('handlebars', handlebars.engine);
在我的客户端js文件中,我在表单提交时有一个函数,用于:

var data = {
  "name":document.getElementById("fname").value,
  "reps":document.getElementById("freps").value,
  "weight":document.getElementById("fweight").value,
  "date":document.getElementById("fdate").value,
  "lbs":bool
};
...
req.open("POST", "/insert", true);
req.setRequestHeader("content-type", "application/json;charset=UTF-8");
...
req.send(JSON.stringify(data));

我按照你的建议修改了代码,但仍然得到一个空的JSON对象。我按照你的建议修改了代码,但仍然得到一个空的JSON对象。这看起来像是另一个问题。这看起来像是另一个问题。