Отправить POST-запрос с JSON, используя Axios и CodeIgniter - PullRequest
0 голосов
/ 30 декабря 2018

Я пытаюсь отправить данные с помощью Axios:

axios.post( url,JSON.stringify({'i': '90'}))
    .then(function (response) {
        console.log(response);
    });

и получить их на сервере:

var_dump(($this->input->post())); // Returns an array |  $_POST

Для указанного выше значения JSON я получаю следующий ответ:

array (2) {["{" i ":" 90 "}"] => string (0) "" [0] => string (0) ""}

Без JSON.stringify, результат из var_dump(($this->input->post())); или с $_POST будет пустым массивом.

Как отправить POST запрос с данными JSON с Axios и получить его на сервере сPHP?

Ответы [ 3 ]

0 голосов
/ 30 декабря 2018

Вам необходимо использовать json_decode:

$json_data = json_decode($this->input->post());
var_dump($json_data);

echo $json_data->i;

or

foreach($json_data as $data){
   echo $data->i;
}
0 голосов
/ 09 марта 2019

У меня была та же проблема, в конце концов я обнаружил, что это из-за XSS Filtering, используйте

   $i = $this->input->post("i",false);

, а в axios используйте так

var formdata=new FormData();
    formdata.append("key",value);

    this.axios.post("http://URL",formdata).then(res=>{})
0 голосов
/ 30 декабря 2018

Это одно из возможных решений, но я думаю, что должен быть лучший способ.

JS:

axios.post( url,JSON.stringify({'i': '90'}))
.then(function (response) {
    console.log(response);
});

PHP (действие CodeIgniter):

    $requestData = json_decode(file_get_contents('php://input'), true);

    foreach ($requestData as $key => $val){
        $val = filter_var($val, FILTER_SANITIZE_STRING); // Remove all HTML tags from string
        $requestData[$key] = $val;
    }
    var_dump($requestData);

Ответ:

array (1) {["i"] => string (2) "90"}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...