Как вывести результаты pdo в формате JSON для использования в функции javascript? - PullRequest
0 голосов
/ 05 декабря 2018

Когда я отображаю результаты в PHP, они, кажется, правильно отформатированы как JSON, но когда я отображаю переменную, которая хранит их внутри JavaScript, я получаю ошибку «Uncaught SyntaxError: Unexpected identifier» (которая исчезает, когда яудалите эхо).Вот код:

$charset="utf8";
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];
try {
    $pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
    throw new \PDOException($e->getMessage(), (int)$e->getCode());
}

$page = 'nike';
$stmt = $pdo->prepare('SELECT `url`, `alt`, `model`, `desc` FROM images WHERE page_id = (select id from pages where title = ?)');
$stmt->execute([$page]);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo 'results are:' . $results; //array
$json = json_encode($results);
echo 'json is: ' . $json;// seemingly correct json formatted result set  

Если я отображаю переменную $json непосредственно внутри JavaScript, например:

var imgs="<?php echo $json; ?>";

Я получаю сообщение об ошибке «Uncaught SyntaxError: Неожиданный идентификатор», который исчезает, когда я удаляю эту строку.Моя функция javascript ожидает, что переменные imgs будут:

var imgs = [
    {"url": "images/adidas_large/1.png", "model": "Kumacross", "desc": ""},
    {"url": "images/adidas_large/2.png", "model": "fig 2 model", "desc": "fig 2 desc"},
    {"url": "images/adidas_large/3.png", "model": "fig 3 model", "desc": "fig 3 desc"},
    {"url": "images/adidas_large/4.png", "model": "fig 4 model", "desc": "fig 4 desc"},
    {"url": "images/adidas_large/5.png", "model": "fig 5 model", "desc": "fig 5 desc"},
    {"url": "images/adidas_large/6.png", "model": "fig 6 model", "desc": "fig 6 desc"},
    {"url": "images/adidas_large/7.png", "model": "fig 7 model", "desc": "fig 7 desc"},
    {"url": "images/adidas_large/8.png", "model": "fig 8 model", "desc": "fig 8 desc"},
    {"url": "images/adidas_large/9.png", "model": "fig 9 model", "desc": "fig 9 desc"}
];

... и работают, когда поставляются с этим жестко закодированным.Поэтому мой вопрос: как правильно вывести результаты запроса PDO в формате JSON для использования в функции JavaScript?

1 Ответ

0 голосов
/ 06 декабря 2018

Я решил это с помощью json_encoding $ в файле javascript вместо php и изменив значение

var imgs = "<?php echo json_encode($results); ?>";

на

var imgs=<?php echo json_encode($results); ?>;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...