Я подозреваю, что вы не понимаете, как работает AJAX. Похоже, вы ожидаете, что вызов AJAX может работать с PHP, расположенным на той же странице, таким образом, что страница загружается только один раз. Это не точно; вам нужна еще одна php-страница, которая вызывается на сервере, который возвращает данные в виде JSON на исходную страницу. У вас также есть проблема с обратным вызовом, так как данные не будут готовы до вызова receiveAndPrint (); он должен быть вызван в обратном вызове (но в этот момент он будет print , поскольку приемная часть уже будет выполнена).
Допустим, у вас есть два PHP-файла, a.php и b.php. Первая будет использоваться для отображения начальной страницы, а вторая будет вызывать для получения новых данных для конкретного экземпляра parent
.
a.php
jQuery.noConflict();
function printSubCategories(categories) {
for (var i = 0; i < categories.length; i++) {
var opt = document.createElement('option');
opt.text = categories[i]['name'];
opt.value = categories[i]['id'];
jQuery('#subcategories').append(opt);
}
}
function ajaxCategories(pathToFile, ajaxData) {
jQuery.get(pathToFile, {'parent' : ajaxData}, function(data) {
printSubCategories(data);
});
}
называется
ajaxCategories('/b.php','value_of_parent');
b.php
<?php
$categories = getCategories(json_decode($_GET['parent']));
header('Content-type: application/json');
?>
<?=json_encode($categories)?>
Вы также можете убедиться, что ответ не кэшируется.
header('Cache-Control: no-store');