node.js使用" request / request"发送ajax请求;包不向服务器发送数据

时间:2015-06-15 17:33:19

标签: ajax json node.js request send

我试图使用https://github.com/request/request库从node.js脚本向php脚本发送一些数据,但似乎lib没有发送数据。

我的test.js:

var request = require('request');

var value = {
    trueProperty: true,
    falseProperty: false,
    numberProperty: -98346.34698,
    stringProperty: 'string',
    nullProperty: null,
    arrayProperty: ['array'],
    objectProperty: { object: 'property' }
};

var options = {
    method: 'POST',
    uri: 'http://127.0.0.1/test.php',
    json: true,
    body: value,
};

request(options, function (error, response, json) {
    if (!error && response.statusCode == 200) {                                                     
        console.log(json);                  
    } else {
        console.log('Error has occurred:');

        if(error){
            console.log(error)
        }

        if(response){
            console.log("Response status code: " + response.statusCode);
        }
    }
});

我的test.php脚本:

<?php

echo json_encode(
    array(
        'REQUEST' => $_REQUEST,
        'GET' => $_GET,
        'POST' => $_POST
    )
);

当我运行test.js脚本时,结果为:

> node test.js
{ REQUEST: [], GET: [], POST: [] }

知道什么是错的吗?

更新 我修改了test.php来返回请求体:     

echo json_encode(
    array(
        'REQUEST' => $_REQUEST,
        'GET' => $_GET,
        'POST' => $_POST,
        'BODY' => print_r(file_get_contents('php://input'), true)
    )
);

现在节点的输出如下:

{ REQUEST: [],
  GET: [],
  POST: [],
  BODY: '{"trueProperty":true,"falseProperty":false,"numberProperty":-98346.34698,"stringProperty":"string","nullProperty":null,"arrayProperty":["array"],"objectProperty":{"object":"property"}}' }

所以它只是PHP不处理数据,它们发送不正确还是什么?

1 个答案:

答案 0 :(得分:0)

通过将 body 键更改为 form 键来修改设置选项,可以在$ _POST&amp; $ _REQUEST数组, json:true 保持不变,它会自动响应我们的请求JSON.parse-d。

更新的选项如下:

var options = {
    method: 'POST',
    uri: 'http://127.0.0.1/test.php',
    json: true,
    form: {
        data: JSON.stringify(value),
    }
};

现在我们可以阅读 $ _ POST ['data'] 并在其上使用 json_decode