Я пытаюсь получить массив объектов с данными из моей базы данных в jquery для рендеринга на веб-сайте.
ex: example.php
<?php function testFunction() { $data = array() $mydata = new stdClass; $mydata->example = 'test'; $data[] = $mydata return json_encode($data); } echo testFunction(); ?>
ex index.html
<script> $.ajax({ type: 'POST', url: 'example.php', data: {map: map}, cache: false, dataType: 'json', success: function(response) { console.log(response[0].example); } }); </script>
Вывод:
console.log (ответ);
["test", $ family: function, $ constructor: function, each: function, clone: function, clean: function …]
console.log (ответ [0] .example);
не определено
По сути, я получаю ответ отлично, когда я его регистрирую, он дает мне структуру, которая имеет смысл. однако я не могу найти правильный способ доступа к моим объектам внутри массива, пример, который у меня выше, возвращает только неопределенные. Для чего нужен правильный синтаксис?
Вам нужно JSON.parse(response);
ответ. Вы должны иметь доступ к нему, как вам нужно.
var parsed_reply = JSON.parse(response);
EDIT После фактического просмотра кода:
PHP
<?php $data['example'] = "test"; echo json_encode($data); ?>
JAVASCRIPT
<script> $.ajax({ type: 'POST', url: 'example.php', data: {map: map}, cache: false, dataType: 'json', success: function(response) { console.log(response['example']); } }); </script>
OUTPUT: "test"
Вам нужно вызвать testFunction()
в example.php
<?php function testFunction() { $data = array() $mydata = new stdClass; $data[] = $mydata->example = 'test'; return json_encode($data); } echo testFunction(); ?>
function testFunction() { $data = array(); $mydata = new stdClass; $mydata->example = 'test'; $data[] = (array) $mydata; return json_encode($data); } echo testFunction();
Ответ:
[{"example":"test"}]
Ключевым здесь является (array) $mydata
который преобразует stdclass
в массив, прежде чем помещать его в $data