Я занят тестированием плагина Ax ios для Node.JS, и у меня возникли трудности с запросом POST.
Для тестирования у меня есть Basi c PHP script
// 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 определил его как массив, который хорош
Затем, когда я пытаюсь использовать Ax ios из Node.js
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, похоже, сделал то, что я ожидал а вот Axe ios этого не сделал, почему? Как мне сообщить Ax ios использовать данные как JSON?
ОБНОВЛЕНИЕ
Я также пробовал следующее
var axios = require("axios");
var data = {};
data.array = ["One", "Two", "Three"];
axios ({
url : lv_url,
method : "POST",
data : JSON.stringify(data)
})
.then(function(res) { console.log(JSON.stringify(res.data)); })
.catch(function(res) { });
return;
Что дало мне NULL
{"type":"Req Type : POST","array":null,"arrayVerify":"NULL"}
И я также пробовал
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;
Что дало мне все правильно, кроме запроса GET сейчас?
{"type":"Req Type : GET","array":["One","Two","Three"],"arrayVerify":"array"}