NodeJS-请求,不进行POST / JSON处理

时间:2019-04-04 07:19:52

标签: node.js ajax request

尝试通过nodeJS-Request通过我的网站提交JSON对象。

var options = {
        uri: 'http://localhost/test.php',
        method: 'POST',
        json: {
            "longUrl": "http://www.google.com/"
        }
    };

    request(options, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log(body)
        }
    });

在我的test.php脚本上,我只是通过json_encode在调试文件中写入$ _REQUEST变量:

<?php

file_put_contents('test.debug.txt', "TEST: " . json_encode($_REQUEST) . json_encode($_POST));

显然,$ _ POST不包含任何内容。作为第一个调试步骤,我在URL中编写了参数,以检查PHP脚本是否正常工作:

var options = {
        uri: 'http://localhost/test.php?debug=1',
        method: 'POST',
        json: {
            "longUrl": "http://www.google.com/"
        }
    };

    request(options, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log(body)
        }
    });

这个附加的debug=1做到了,因此我可以在调试文件中看到{'debug':1}作为输出。所以我现在的问题是:POST变量发生了什么?

NodeJS请求的输出:

0|server  |   request:
0|server  |    Request {
0|server  |      _events:
0|server  |       [Object: null prototype] {
0|server  |         error: [Function: bound ],
0|server  |         complete: [Function: bound ],
0|server  |         pipe: [Function],
0|server  |         data: [Function],
0|server  |         end: [Function] },
0|server  |      _eventsCount: 5,
0|server  |      _maxListeners: undefined,
0|server  |      method: 'POST',
0|server  |      body:
0|server  |       '{"longUrl":""http://www.google.com/"}',

1 个答案:

答案 0 :(得分:1)

如果您使用的是npm request包,则发布json的正确方法是(doc):

options = {
  uri: 'http://localhost/test.php',
  method: 'POST',
  body: JSON.stringify({
    "longUrl": "http://www.google.com/"
  }),
  json: true
}

更新: 尝试以此发送为application/x-www-form-urlencoded

options = {
  uri: 'http://localhost/test.php',
  method: 'POST',
  form: {
    "longUrl": "http://www.google.com/"
  }
}