从JavaScript到nodejs服务器的AJAX POST JSON
我试图发送一个JSON
对象从javaScript到node.js服务器。 我使用标准的XMLHttpRequest
从JavaScript和标准的node.js代码发送它。
两个代码似乎正在通信,但是node.js总是给我一个空的JSON
对象。 我不确定我在做什么错。
这是我的JavaScript代码:
<html> <head> <script> function xhrPost() { var data = {"name":"John", "time":"2pm"}; var xhr = new XMLHttpRequest(); xhr.withCredentials = true; xhr.addEventListener("readystatechange", function () { if (this.readyState === 4) { console.log(this.responseText); } }); xhr.open("POST", "http://[serverIP]:8080/addUser"); xhr.setRequestHeader("cache-control", "no-cache"); xhr.setRequestHeader("content-type", "application/json;charset=UTF-8"); xhr.send(JSON.stringify(data)); } </script> </head> <body onload="xhrPost()"> </body> </html>
这是我的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()
作为中间件。 在https://github.com/expressjs/body-parser#bodyparserjsonoptions中查看更多信息
以下行后:
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"}
我能够正确地在客户端上logging对象,但是每次我尝试将数据发送到服务器时,
console.log(req.body);
总是会在服务器上返回
{} undefined
服务器端我的设置与function数据传递是
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文件,我有一个表单提交function:
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));