Задать вопрос

Почему json_decode() возвращает тип данных «строка»?

Доброго. Объясните. Еще учусь.
У меня есть данные которые хранятся в localStorage. Эти данные с помощью $axios отправляю на сервер.
Данные перед отправкой кодирую в строку.

js
onSubmitFormIndex() {
      if (localStorage.localStorage) {
        this.dataTest = JSON.stringify(localStorage.localStorage);
        console.log(this.dataTest); 
        console.log(typeof this.dataTest); // string
      }
      let formData = new FormData();
      formData.append('name', this.name);
      formData.append('obj', this.dataTest);
      this.$axios.post('/apivue/postForm.php', formData);
      this.show = false;
    }


далее php принимает эти данные

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: POST");
header("Content-Type: application/json; charset=UTF-8");

$localStorage = json_decode($_POST['obj'], true);
AddMessage2Log(gettype($localStorage));


gettype($localStorage) - показывает тип строка, хотя мне нужен ассоциативный массив. Вроде как я преобразовал него
json_decode($_POST['obj'], true);
  • Вопрос задан
  • 218 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
delphinpro
@delphinpro Куратор тега PHP
frontend developer
я так понимаю, это строка и есть
console.log(typeof this.dataTest); // string
далее вы ее пакуете в данные и отправляете
formData.append('obj', this.dataTest);

потом на сервере получаете эту строку и декодируете ее
json_decode($_POST['obj'], true);

Что получается: отправляем строку, получаем строку и удивляемся, а почему же не массив?

--------

Видимо проблема в том, каким образом вы сохраняете данные в локальном хранилище браузера. Ну и понимать бы, какие там данные. Код выкладывайте.

--------

Решение
- this.dataTest = JSON.stringify(localStorage.localStorage);
+ this.dataTest = localStorage.localStorage;
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
1. localStorage хранит только строки.
2. localStorage.localStorage - строка.
3. JSON.stringify(localStorage.localStorage) - JSON, кодирующий строку.
4. json_decode($_POST['obj'], true) декодирует JSON в исходную строку, которая была в localStorage.localStorage.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы