Intereting Posts
Логика галереи изображений Laravel $ _FILES Empty При загрузке Как я могу заполнить выпадающий список, выбрав значение из другого раскрывающегося списка Codeigniter `where` и` or_where` Укажите PHP-код для выбора дат и записей 3 дня при включении () или require () мне всегда нужно использовать ../../ относительно моего файла? Есть простой способ? База данных MySQL не запускается в XAMPP Manager-osx PHP eval () можно использовать в моем коде? (динамические аргументы) Загрузка файла Jquery SyntaxError: JSON.parse: неожиданный символ без пробелов после данных JSON Вызов хранимой процедуры в цикле foreach – только первый выполнен Сделать изменение текста div на клике на основе данных PHP с помощью Ajax Синтаксис PHP MySQL для вставки даты, времени JQuery: переключать изображения Отправка писем BCC с использованием SMTP-сервера? PDO – Неустранимая ошибка: вызов функции-члена функции fetch () для объекта, не являющегося объектом

Невозможно получить значения из массива JSON и объекта

В моем Javascript и PHP мне удалось сделать вызов .ajax, чтобы получить массив. Однако, когда я хочу отображать отображение значений каждого объекта, я не могу этого сделать.

PHP:

$request = '{"request_id":' .$requestId. ', "reqName":"' .$requestName. '", "reqSubject":' .json_encode($requestSubjects). '}'; array_push($requestArray, $request); echo json_encode($requestArray); 

Javascript:

 $.ajax({ type: "POST", url: serverURL + "getTutorRequestsProcess.php", data: sendTutId, dataType: "json", success: function(data){ localStorage.setItem('pending', JSON.stringify(data)); pending = JSON.parse(localStorage.getItem('pending')); console.log(pending); }, error: function(jqXHR, textStatus, errorThrown){ alert('Unable to retrieve requests.', null, 'Error','Done'); } }); 

Поэтому, когда я console.log(pending) выглядит следующим образом:

 ["{"request_id":13, "reqName":"Rin", "reqSubject":["English","A Math"]}", "{"request_id":14, "reqName":"Rin", "reqSubject":["English","E Math"]}"] 

Когда я console.log(pending[0]) , я могу получить первый объект:

 {"request_id":13, "reqName":"Rin", "reqSubject":["English","A Math"]} 

Однако, когда я хочу получить значения объекта так, console.log(pending[0].request_id) , он возвращает undefined .

Был бы очень признателен, если бы кто-нибудь мог сказать мне, что не так с моими кодами. Спасибо.

EDIT: Я пытаюсь добавить данные в свой localStorage. Обновленные коды, чтобы отразить то, что я делаю.

Обновлен Javascript:

 $.ajax({ type: "POST", url: serverURL + "getTutorRequestsProcess.php", data: sendTutId, dataType: "json", success: function(data){ localStorage.setItem('pending', JSON.stringify(data)); pending = JSON.parse(localStorage.getItem('pending')); console.log(pending[0]); var response = jQuery.parseJSON(pending[i]); console.log(response.request_id); }, error: function(jqXHR, textStatus, errorThrown){ alert('Unable to retrieve requests.', null, 'Error','Done'); } }) в $.ajax({ type: "POST", url: serverURL + "getTutorRequestsProcess.php", data: sendTutId, dataType: "json", success: function(data){ localStorage.setItem('pending', JSON.stringify(data)); pending = JSON.parse(localStorage.getItem('pending')); console.log(pending[0]); var response = jQuery.parseJSON(pending[i]); console.log(response.request_id); }, error: function(jqXHR, textStatus, errorThrown){ alert('Unable to retrieve requests.', null, 'Error','Done'); } }) 

Оба ответа OVM и Codeseeker работают и решили мой вопрос. Печально, что я не могу отметить, что оба они являются правильными, поскольку оба они предоставили два разных, но действительных решения.

. используется для доступа к объекту, в то время как [] используется для доступа к значению массива.

 console.log(data[0]['request_id']); 

демонстрация

Обновить:

Попробуйте –

 var response = jQuery.parseJSON(data0) console.log(response.request_id); 

Проблема в том, что вы сериализуете строки с json_encode, а не с реальными PHP-классами и свойствами.

Этот результат json представляет собой массив строк, а не массив объектов:

 ["{"request_id":13, "reqName":"Rin", "reqSubject":["English","A Math"]}", "{"request_id":14, "reqName":"Rin", "reqSubject":["English","E Math"]}"] 

Вы хотите получить такой результат

 [{"request_id":13, "reqName":"Rin", "reqSubject":["English","A Math"]}, {"request_id":14, "reqName":"Rin", "reqSubject":["English","E Math"]}] 

Для этого попытайтесь создать стандартный объект PHP с этими свойствами и сериализовать его. Не сериализуйте строку, содержащую json.

Итак, на стороне сервера замените первую строку кода на это, и вам будет хорошо идти:

 $request = (object)['request_id': $requestId, 'reqName': $requestName, 'reqSubject': ['English', 'A Math']];