[英]Ajax pagination with php returning entire page instead of the paginated div
I have a php website which has to display list of items on a page in paginated format.I achieved this using php but now I want to add ajax functionality to it.So I added this function to be called on the click of the page no in the paginated portion. 我有一个php网站,它必须以分页格式显示页面上的项目列表。我使用php实现了此功能,但现在我想向其添加ajax功能。因此,我添加了此功能,可在单击页面时调用在分页部分。 Ajax/Jquery function:(.paginate is the class for the page links) Ajax / Jquery函数:(。paginate是页面链接的类)
$(document).ready(function()
{
$('.paginate').live('click', function(e)
{
//alert("Here");
e.preventDefault();
var btnPage = $(this);
//alert(btnPage.attr('href')); /RealEstate/process.php?page=3&ipp=2&venue=Array $('#temp').load($(this).attr("href")+' #temp');
var getUrl = btnPage.attr('href');
//var dataLocality = { 'locality[]' : []};
//alert(getUrl);
$.ajax(
{
url:btnPage.attr('href'),
success : function(resp)
{
// replace current results with new results.
$('#project_section').html(resp);
},
error : function()
{
window.location.href = btnPage.attr('href');
}
});
});
});
My paginate function is somewhat like this: 我的分页函数有点像这样:
function paginate()
{
if(!isset($this->default_ipp)) $this->default_ipp='2';
if($_GET['ipp'] == 'All')
{
$this->num_pages = 1;
}
else
{
if(!is_numeric($this->items_per_page) OR $this->items_per_page <= 0) $this->items_per_page = $this->default_ipp;
$this->num_pages = ceil($this->items_total/$this->items_per_page);
}
$this->current_page = (isset($_GET['page'])) ? (int) $_GET['page'] : 1 ; // must be numeric > 0
$prev_page = $this->current_page-1;
$next_page = $this->current_page+1;
if($_GET)
{
$args = explode("&",$_SERVER['QUERY_STRING']);
foreach($args as $arg)
{
$keyval = explode("=",$arg);
if($keyval[0] != "page" And $keyval[0] != "ipp") $this->querystring .= "&" . $arg;
}
}
if($_POST)
{
foreach($_POST as $key=>$val)
{
if($key != "page" And $key != "ipp") $this->querystring .= "&$key=$val";
}
}
if($this->num_pages > 4)
{
$this->return = ($this->current_page > 1 And $this->items_total >= 10) ? "<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=$prev_page&ipp=$this->items_per_page$this->querystring\">« Previous</a> ":"<span class=\"inactive\" href=\"#\">« Previous</span> ";
$this->start_range = $this->current_page - floor($this->mid_range/2);
$this->end_range = $this->current_page + floor($this->mid_range/2);
if($this->start_range <= 0)
{
$this->end_range += abs($this->start_range)+1;
$this->start_range = 1;
}
if($this->end_range > $this->num_pages)
{
$this->start_range -= $this->end_range-$this->num_pages;
$this->end_range = $this->num_pages;
}
$this->range = range($this->start_range,$this->end_range);
for($i=1;$i<=$this->num_pages;$i++)
{
if($this->range[0] > 2 And $i == $this->range[0]) $this->return .= " ... ";
// loop through all pages. if first, last, or in range, display
if($i==1 Or $i==$this->num_pages Or in_array($i,$this->range))
{
$this->return .= ($i == $this->current_page And $_GET['page'] != 'All') ? "<a title=\"Go to page $i of $this->num_pages\" class=\"current\" href=\"#\">$i</a> ":"<a class=\"paginate\" title=\"Go to page $i of $this->num_pages\" href=\"$_SERVER[PHP_SELF]?page=$i&ipp=$this->items_per_page$this->querystring\">$i</a> ";
}
if($this->range[$this->mid_range-1] < $this->num_pages-1 And $i == $this->range[$this->mid_range-1]) $this->return .= " ... ";
}
$this->return .= (($this->current_page < $this->num_pages And $this->items_total >= 10) And ($_GET['page'] != 'All') And $this->current_page > 0) ? "<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=$next_page&ipp=$this->items_per_page$this->querystring\">Next »</a>\n":"<span class=\"inactive\" href=\"#\">» Next</span>\n";
$this->return .= ($_GET['page'] == 'All') ? "<a class=\"current\" style=\"margin-left:10px\" href=\"#\">All</a> \n":"<a class=\"paginate\" style=\"margin-left:10px\" href=\"$_SERVER[PHP_SELF]?page=1&ipp=All$this->querystring\">All</a> \n";
}
else
{
for($i=1;$i<=$this->num_pages;$i++)
{
$this->return .= ($i == $this->current_page) ? "<a class=\"current\" href=\"#\">$i</a> ":"<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=$i&ipp=$this->items_per_page$this->querystring\">$i</a> ";
}
$this->return .= "<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=1&ipp=All$this->querystring\">All</a> \n";
}
$this->low = ($this->current_page <= 0) ? 0:($this->current_page-1) * $this->items_per_page;
if($this->current_page <= 0) $this->items_per_page = 0;
$this->limit = ($_GET['ipp'] == 'All') ? "":" LIMIT $this->low,$this->items_per_page";
}
On the page where I want to display the paginated div ,i am getting the entire page as response instead of the paginated div .I have separated the paginated div to a separate page and included it(added code below) on the display page,but not working. 在我要显示分页div的页面上,我得到了整个页面而不是分页div的响应。我将分页div分离到一个单独的页面,并在显示页面上包括了它(下面添加了代码),但是不工作。
<div id="project_section">
<?php include_once("cityPropertySearchResults.php");?>
</div>
Can someone throw some light over it? 有人可以给它照亮吗?
UPDATED: I found something similar here 更新:我在这里发现了类似的东西
This works for the links but now,all the js files go on loading again and again,recursively. 这适用于链接,但是现在,所有js文件都以递归方式一次又一次地继续加载。
Thanks for your time. 谢谢你的时间。
在第一页加载之后,首先将极限起始值分配为0,然后将极限起始值增加为每页的极限,然后将该值通过ajax传递,并在查询中使用该极限起始值(例如SELECT * FROM tbl LIMIT 0,10;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.