我正试图解决一些关于分页的逻辑问题。
我需要基于SQL查询JSON数组构建分页元素,这没什么大不了的,只是我处理分页的方式是只返回LIMIT参数设置的"每页显示"元素。
为了解决这个问题,下面我们来看看我的代码。
<form id="hidden">
<input type="hidden" name="limit" value="5" id="hshowpp" />
</form>
<form id="userform">
<select id="ushowpp">
<option value=5>5</option>
<option value=10>10</option>
<option value=15>15</option>
<option value=20>20</option>
</select>
</form>
当更改时,会引发jQuery
$('#show').change(function() {
var ushow = $('#ushowpp').val();
$('#hshowpp').val(ushow);
}
然后是AJAX
var results = $('#hidden').serialize();
var url = '<php? echo JURI::base(); ?>index.php?option=com_mls&task=ListData&format=raw&' + results;
$.ajax({
url: url,
dataType: 'json'
});
因此AJAX返回一个index.php?.....limit=5
或用户选择的任何查询。
现在,这是一切运作的支柱。我的逻辑问题是如何绕过分页问题。发送到AJAX的URL包括一个LIMIT参数,当它到达mySQL时,会像SELECT * FROM my_table WHERE 1=1 AND ...... LIMIT 0,5
一样出现,其中LIMIT的参数是"当前页面"one_answers"每页显示"值。这个问题特别涉及我需要显示结果中不包括"每页显示"限制参数的总页数的地方。
如果这些都有意义的话。。。想法?
我的解决方案是将极限参数分解为一个单独的隐藏形式so和.serlaize()
,根据我需要做的事情,每个形式要么串联,要么单独。下面是一个小提琴来说明我的方法。