Заполнение выпадающего меню из php в отдельном div
У меня есть функция search (), которая использует ajax и передает несколько значений / переменных в php, такие как color, itemtype и т. Д. Как ‘ajax_data’.
$.ajax({
url: 'phpmysql.php',
data: ajax_data,
success: function (data) {
$('#searchresults').html(data);
}
}).error(function() {
alert ('An error occurred');
});
Результаты поиска затем динамически заполняются в #searchresults.
У меня есть выпадающее меню (#pagemenu), в котором я хочу динамически отображать номера страниц текущего поиска, например, если в выпадающем списке есть 10 страниц с вариантами отображения результатов от 1 до 10.
Я определил «результаты на страницу» и «количество общих страниц» в php и установил для них значение $ per_page и $ totalpages.
//forloop listing number of pages in dropdown
for ($x=1; $x<=$totalpages; $x++) {
echo "<option value=".$x.">".$x."</option>";
}
Итак, результаты поиска загружаются в #searchresults, но как мне загрузить загрузочный цикл for в выпадающий список #pagemenu в отдельном div? В настоящее время я могу думать только о том, чтобы сделать это, написав php для выпадающего списка и forloop на главной странице, а затем используя переменные сеанса для ссылки на файл php, но не уверен, что это хорошая идея. Любой совет приветствуется! Спасибо
Придерживаясь вашего конкретного вопроса, который включает в себя создание раскрывающегося списка на сервере и возврат его в ответе AJAX, вам, кажется, нужно вернуть в ответе две вещи: данные и параметры разбивки на страницы.
Одна вещь, которую вы могли бы сделать, это вернуть объект Json, содержащий обе вещи, чтобы вы могли сделать что-то вроде этого:
success: function (data) {
$('#searchresults').html(data.result);
$('#pagemnu').html(data.options);
}
Один из способов добиться этого со стороны клиента — добавить dataType
в json
, так data
анализируется для объекта и готов к использованию как таковой:
$.ajax({
dataType: 'json',
url: 'phpmysql.php',
data: ajax_data,
success: function (data) {
$('#searchresults').html(data.result);
$('#pagemnu').html(data.options);
}
}).error(function() {
alert ('An error occurred');
});
На стороне сервера вы должны заполнить массив обоими результатами и вернуть его в формате JSON:
$result = array();
...
$result['searchResult'] = $theSearchResult;
$optionsHtml = '';
for ($x=1; $x<=$totalpages; $x++) {
$optionsHtml .= "<option value=".$x.">".$x."</option>";
}
$result['options'] = $optionsHtml;
...
echo json_encode( $result );
Других решений пока нет …