我正忙于测试 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?
动漫人物