我正在尝试将关联数组发布到另一个node.js服务器,内部在我的服务器中:

第一台服务器使用Request这样发布请求

var request = require('request');
request.post('http://localhost:8084/',{ json: {"isposted": {"ok":"val"}}});


第二台服务器的结果是这样的:

{ '{"isposted":{"ok":"val"}}': '' }


代替:

{"isposted":{"ok":"val"}}


用于解析数据的服务器(第二个)源代码是这样的:



var http = require('http');
var qs = require('qs');

var processRequest = function(req,callback) {
    var body='';
    req.on('data', function(data) { body+=data; });
    req.on('end',  function() { callback(qs.parse(body)); });
}

var server2 = http.createServer(function(req, res) {
    processRequest(req,function(data){
		try
		{
		    data=JSON.parse(data.jsonData);
		}
		catch(e)
		{
		    data=data;
		}
		console.log(data);
    });
 });

最佳答案

qs是解码这样的JSON的错误包:callback(qs.parse(body));。尝试像这样使用JSON.parse:callback(JSON.parse(body));

尝试此操作以支持不同类型的编码:

req.on('end',  function(){
    if ('application/json' === req.headers['content-type']) {
        callback(JSON.parse(body));
    }
    else {
        callback(qs.parse(body));
    }
});

10-07 19:48
查看更多