Идея здесь в том, чтобы автоматически загружать (или загружать) мою индексную страницу с некоторыми продуктами из таблицы базы данных MySQL.JavaScript не может найти данные JSON от PHP json_encode
Во-первых, мой PHP.
<?php
header('Content-Type: application/json');
require_once 'classloader.php';
$db = new Database();
$items = $db->getRows('SELECT * FROM products');
foreach($items as $eachItem){
$itemsJSON = new Item($eachItem->product_name, $eachItem->product_quantity, $eachItem->product_cost);
echo json_encode($itemsJSON);
}
Это, кажется, отлично работает и дает мне два правильно закодированных объекта JSON моего класса Item.
{"name":"Slippers","quantity":"3","cost":"4.00"}
{"name":"Gloves","quantity":"5","cost":"9.00"}
My JavaScript выглядит следующим образом (и многие другие подобные вариации)
$(document).ready(function() {
$.post("productloader.php", function(data) {
$("#result").html(data);
});
});
Я не знаю, почему он не работает. Я не хотел использовать $.getJSON()
, потому что нет строки запроса для работы, поэтому я предполагаю, что мне понадобится $.post()
.
Кажется, что это довольно распространенная проблема, но я пока не нашел решение. Любая помощь будет оценена по достоинству. Спасибо.
Вы смотрели AJAX запрос/ответ в консоли браузера? Есть ли ошибки? –
Как только запрос AJAX получает первый успешный результат из 'echo json_encode ($ itemsJSON);', он перестает прослушивать ответ, и все последующие итерации вашего цикла foreach будут проигнорированы (в JavaScript). Вам нужно добавить каждый элемент в массив, а затем вернуть полный массив 'json_encode()' ed. – War10ck
Я не думаю, что вы должны иметь это внутри цикла: 'json_encode ($ itemsJSON)' - он должен быть снаружи. – andre3wap