На странице документации нет объяснения на стороне сервера. Поскольку я запутался, я хочу решить свою проблему и, возможно, сделать ссылку на код на стороне сервера и на стороне клиента.
Я пытаюсь сделать select2 (используя v.4.0) разбиением на страницы с бесконечной прокруткой в качестве окна поиска, но путаюсь с params.page
. Как я могу получить этот параметр в качестве запроса запроса и вернуть номер страницы для бесконечной прокрутки. Как срабатывает бесконечная прокрутка? Ниже приведены мои коды, которые я могу получить только 10 результатов.
HTML-часть моего кода:
<select id="search_products" name="q"></select>
JS часть;
jQuery('#search_products').select2({
ajax: {
url: "search_results.php",
dataType: 'json',
delay: 250,
data: function (params) {
return {
q: params.term, // search term
page_limit: 10,
page:params.page
};
},
processResults: function (data, params) {
params.page = params.page || 1;
return {
results: data.items,
pagination: {
more: (params.page * 30) < data.total
}
};
},
cache: true
},
escapeMarkup: function (markup) { return markup; },
minimumInputLength: 3,
templateResult: formatRepo,
templateSelection: formatRepoSelection
});
function formatRepo (repo) {
if (repo.loading) return repo.adi;
var markup = '<div class="clearfix">' +
'<div class="col-sm-7">' + repo.name + '</div>' +
'<div class="col-sm-4"><i class="fa fa-barcode"></i> ' + repo.barkod + '</div>';
return markup;
}
function formatRepoSelection (repo) {
return repo.adi;
}
Сторона сервера - часть PHP (search_results.php
):
if (isset($_REQUEST['q']) && !empty($_REQUEST['q'])) {
$q = getVar('q', 'anp'); //getVar is my custom sanitation function
$pglm = getVar('page_limit', 'int');
$page_lim = (empty($pglm) ? 10 : $pglm);
$pg = getVar('page', 'int');
$page = (empty($pg) ? 0 : $pg);
$sira = $page*$page_lim;
//using MYSQL, querying with custom database query class $db
$qu = $db->get_results("
SELECT * FROM `products`
WHERE `adi` LIKE '%$q%'
OR `ozellikleri` LIKE '%$q%'
OR `ozet` LIKE '%$q%'
OR `barkod` LIKE '%$q%' LIMIT $sira, $page_lim
");
if($qu && count($qu) > 0) {
foreach ($qu as $oqu) {
$items[] = array('name' => $oqu->adi, 'id' => $oqu->id, 'barkod' => $oqu->barkod);
}
echo json_encode(array('items' => $items, 'total' => count($qu), 'page' => $page));
}
}