Axios POST 请求异常数据格式

我正忙于测试 Node.JS 的 Axios 插件,但我在处理 POST 请求时遇到了一些困难。


为了测试,我有一个基本的 PHP 脚本


// Identify GET Request

if(!empty($_GET)) {

   $type = "Req Type : GET";

   $params = $_GET;

   $array = $_GET["array"];

   $arrayVerify = gettype($array);

}


// Identify POST Request

if(!empty($_POST)) {

   $type = "Req Type : POST";

   $params = $_POST;

   $array = $_POST["array"];

   $arrayVerify = gettype($array);

}


$response = new stdClass();

$response->type = $type;

$response->array = $array;

$response->arrayVerify = $arrayVerify;

echo json_encode($response);

exit();

作为初始测试,我按如下方式使用 JQuery Ajax


data = {};

data.array = ["One", "Two", "Three"];

$.ajax ({

   url      : "url_goes_here",

   type     : "POST",

   dataType : "json",

   data     : data,

   success  : function(res) { console.log(JSON.stringify(res)); },

   error    : function(res) { abandonAllHope(); }

});

我得到以下输出


{"type":"Req Type : POST","array":["One","Two","Three"],"arrayVerify":"array"}

这看起来像格式正确的 JSON,数组仍然是一个数组,PHP 将其识别为一个很好的数组


然后当我尝试使用来自 Node.js 的 Axios 时


var axios = require("axios");

var data = new URLSearchParams();

data.append("array", ["One", "Two", "Three"]);

axios ({

   url     : "url_goes_here",

   method  : "POST",

   data    : data

})

.then(function(res) { console.log(JSON.stringify(res.data)); })

.catch(function(res) { abandonAllHope(); });

我得到以下输出


{"type":"Req Type : POST","array":"One,Two,Three","arrayVerify":"string"}

该数组似乎只是值的串联,PHP 将其识别为字符串


JQuery 似乎做了我预期的事情,但 Axios 没有,这是为什么?我如何告诉 Axios 将数据用作 JSON?


三国纷争
浏览 135回答 1
1回答

动漫人物

使用您已经尝试过的选项:var axios = require("axios");var data = {};data.array = ["One", "Two", "Three"];axios ({   url     : lv_url,   method  : "POST",   params  : data}).then(function(res) { console.log(JSON.stringify(res.data)); }).catch(function(res) { });return;但是在 PHP 端,您不会填充$_POST,而是使用php://input: $data = json_decode(file_get_contents("php://input"));
打开App,查看更多内容
随时随地看视频慕课网APP