Получение json из бд

146
21 декабря 2020, 11:00

В бд хранится данные в формате json, вот так выглядят {"0,2,,,,,,,,,,,,,,": ""} Мне нужно получить их и записать в массив js

Делаю AJAX:

$(document).ready(function(){
    $.ajax({
      type:'POST',
      url: 'php/getLessonData.php',
      data: false,
      dataType: 'json',
      success: function(data){
          alert(data);
      }
    });
  });

getLessonData.php:

<?php
require "db.php";
header('Content-Type: application/json');
if (isset($_SESSION['logged_user'])) {
  // Получаем id users чья ссесия
  $userid = $_SESSION['logged_user']->id;
  // Загружаем данные об этом user
  $user = R::Load('users', $userid);
  //подгружаем данные с таблицы Courses
  $course = R::load('courses', $userid);
  // ЗДЕСЬ записываем json из бд в переменную $lessonProgress
  // lesson_progress это то поле, где находится {"0,2,,,,,,,,,,,,,,": ""}
  $lessonProgress = $course->lesson_progress;
}
//Вот здесь если оставить json_decode то ответ от сервера получается(см ниже)
echo json_decode($lessonProgress);
?>

Ответ при использовании json_decode:

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

Полезная нагрузка ответа:

<br />
<b>Recoverable fatal error</b>:  Object of class stdClass could not be converted to string in <b>W:\domains\appBL\php\getLessonData.php</b> on line <b>15</b><br />

var_dump(json_decode($lessonProgress)) :

object(stdClass)#21 (1) { ["0,2,,,,,,,,,,,,,,"]=> string(0) "" }

alert в ajax запросе возвращает [object Object]

Ответ без использования json_decode, т.е. просто echo $lessonProgress;

var_dump$lessonProgress : string(25) "{"0,2,,,,,,,,,,,,,,": ""}"

alert в ajax запросе не срабатывает

Что я делаю не так, как мне получить и записать эти данные в массив js?

Answer 1

Изначально вы неправильно записали массив в формате JSON в базу, соответственно и вернуть его не сможете.

Нужно передать массив в php в формате JSON, после использовать json_encode($post) и записать его в базу, в результате вы получите в базе строку [1,2,3], которая соответствует формату.

Получить данные очень просто, вы вытаскиваете эту строку и безо всякого перевода (просто через echo) отправляете её уже в формате JSON.

Если же вы хотите сохранить ассоциативный массив, вам следует использовать другую конструкцию, к примеру сериализованный массив php

READ ALSO
Помогите с изменением XML файла

Помогите с изменением XML файла

Есть файл xml на пример с такой структурой:

128
не отправляется POST запрос через CURL

не отправляется POST запрос через CURL

есть код , но при отправке , сервер не получае мой запрос ввиде json,прилетает пустой , в чем может быть проблема

110
Как отправить изображение base64 через WordPress contact form 7?

Как отправить изображение base64 через WordPress contact form 7?

Возникла проблемаУ меня есть канвас и картинка, которая в нем генерируется

113