javascript – 从Node.js到PHP的POST

我正在尝试从Node.js应用程序将一些数据POST到 PHP脚本.暂时我只是构建了一个概念证明,但是我无法将实际的数据转移到PHP端.请求通过,我得到200回,但PHP认为$_POST数组是空的.

这是我的节点代码

// simple end point just for testing

exports.testPost = function(request,response) {
    data = request.body.data;

    postToPHP(data);

    response.end(data);
}

function postToPHP (data) {
    var http = require('http');

    var options = {
        host : 'localhost',port : 8050,path : '/machines/test/index.PHP',method : 'POST',headers : {
            'Content-Type' : 'application/json','Content-Length' : Buffer.byteLength(data)
        }
    };

    var buffer = "";

    var reqPost = http.request(options,function(res) {
        console.log("statusCode: ",res.statusCode);

        res.on('data',function(d) {
            console.info('POST Result:\n');
            //process.stdout.write(d);
            buffer = buffer+data;
            console.info('\n\nPOST completed');

        });

        res.on('end',function() {
            console.log(buffer);
        });
    });

    console.log("before write: "+data);

    reqPost.write(data);
    reqPost.end();

}

再次,请求使它到localhost:8050 / machines / test / index.PHP,但是当我做一个$_POST的var_dump它是一个空数组.

[29-Jan-2014 21:12:44] array(0) {

}

我怀疑我做错了.write()方法,但我不能弄清楚什么.任何关于我失踪或做错误的输入将不胜感激.

*更新:

由于某些注释表示使用file_get_contents(‘PHP:// input’);确实可以在PHP方面获取数据,但我仍然希望直接访问$_POST数组.

解决方法

由于您正在使用Content-Type:application / json发送数据,您将需要读取原始输入,因为PHP不知道如何将json读入全局变量,如_GET和_POST,除非您有一些PHP扩展名.

您可以使用querystring库将对象解析为不能使用Content-Type:application / x-www-form-urlencoded传输的名称 – 值对查询字符串,以便将数据解析为全局变量

var data = {
   var1:"something",var2:"something else"
};
var querystring = require("querystring");
var qs = querystring.stringify(data);
var qslength = qs.length;
var options = {
    hostname: "example.com",port: 80,path: "some.PHP",method: 'POST',headers:{
        'Content-Type': 'application/x-www-form-urlencoded','Content-Length': qslength
    }
};

var buffer = "";
var req = http.request(options,function(res) {
    res.on('data',function (chunk) {
       buffer+=chunk;
    });
    res.on('end',function() {
        console.log(buffer);
    });
});

req.write(qs);
req.end();

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...