我试图使用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不处理数据,它们发送不正确还是什么?
答案 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 。