JavaScript — заполнение выпадающего меню в отдельном div от переполнения стека

Заполнение выпадающего меню из 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, но не уверен, что это хорошая идея. Любой совет приветствуется! Спасибо

0

Решение

Придерживаясь вашего конкретного вопроса, который включает в себя создание раскрывающегося списка на сервере и возврат его в ответе 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 );
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]