POST-запрос от JS к PHP: неверный JSON - PullRequest
1 голос
/ 03 октября 2019

Когда я отправляю пост-запрос в php - он возвращает мне строку, и я ничего не могу с этим поделать.

Это мой запрос от JS:

axios.post("ajax.php", JSON.stringify(myObj))

Вот как яполучить данные (из JS) в PHP:

$data = $_POST;

И это ответ $ data var_dump

array(1) {
  ["{"username":"rew","info":"rew"}"]=>
  string(0) ""
}

Мне нужно 2 переменные. Первый имя пользователя и второй информация . Как я могу это сделать? Можно ли разделить эту линию? Или я отправляю в неправильном формате?

Мой полный код PHP

$data = array(
  "userName" => $_POST['userName'],
  "pass" => $_POST['pass']
);
$opts = array(
  'http'=>array(
    'method'  => 'POST',
    'content' => json_encode($data),
    'header'  => "Content-Type: application/json\r\n" .
                 "Accept: application/json\r\n" .
                 "Authorization: Basic " . base64_encode("$username:$password"),
  )
);
$context = stream_context_create($opts);
$file = file_get_contents($remote_url, false, $context);
echo $file;

И var myObj

let myObj = {
    "username": "rew",
    "info": "rew"
};

1 Ответ

0 голосов
/ 03 октября 2019

Кажется, вам не нужно stringify объект. Тип контента по умолчанию с axios будет application/json, так что это должно работать:

axios.post("ajax.php", myObj);

Что касается $_POST, то придут только типы контента application/x-www-form-urlencoded и multipart/form-data, вынеобходимо изменить код для декодирования необработанного ввода:

json_decode(file_get_contents('php://input'), true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...