我正在使用html5和javascript处理cordova应用程序。
架构如下:电话应用程序向服务器请求内容,该服务器询问firebird数据库。数据库回答服务器,该服务器将询问的数据提供给电话应用程序(以html5 / javascript格式)。
我已经能够使用JSON将数据从服务器发送到手机,我认为从手机应用程序向服务器发送一些数据也是一样的。但是,我不知道如何从手机向这样的服务器发送数据。我试图尽可能地简化问题。
所以考虑以下javascript代码:
var send = { "name":"John", "age":30, "car":null };
var sendString = JSON.stringify(send);
alert(sendString);
xhttp.send(sendString);
(警报确实发送给我:{"姓名":" John","年龄":30," car":null })
如何在Node JS服务器中检索它?目前,我的代码如下:
app.post('/createEmp', function(req, res){
//res.send(req.body.name);
//console.log('test :' + req.app.post('name'));
//console.log(req);
console.log('createEmp');
if(typeof(req) == 'undefined') {console.log('Y a rien'); }
else {
console.log('La req n est pas vide, son type est : ' + typeof req);
}
console.log(typeof req.query.name);
});
我发表评论,以便你知道我已经尝试过的东西(还有更多)...... 每次都会定义req的类型或者它是一个对象,但由于它是循环的,我无法解析它,所以我不确定它是从电话应用程序发送的数据。
那么请你给我一些建议,解释我如何将数据从手机发送到服务器? (我想我可以尝试在服务器解析的网址中显示数据,但我不想这样做以保护数据......)。
任何帮助将不胜感激!非常感谢你 !
(PS:我已经到处寻找一些答案,但还没有任何工作)
答案 0 :(得分:1)
首先在客户端做这个..
var send = { "name":"John", "age":30, "car":null };
var sendString = JSON.stringify(send);
alert(sendString);
xhttp.send(send);
然后在服务器端,您需要添加一个中间件,该中间件将填充请求对象中的body参数。
var express=require("express");
var bodyParser=require("body-parser");
var app=express();
// Process application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({extended: true}))
// Process application/json
app.use(bodyParser.json());
app.post('/createEmp', function(req, res){
//now req.body will be populated with the object you sent
console.log(req.body.name); //prints john
});
答案 1 :(得分:0)
req
是一个充满了每个请求附带的东西的对象。你需要得到你的要求。这可能会对您有所帮助:How to retrieve POST query parameters?
但是因为没有太多的客户端JavaScript我会问:你是否指定要发布这个?
尝试这样做:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send ...当你使用xhr.setRequestHeader(“Content-Type”,“application / json”)时,你可能不需要对此进行字符串化。