当前位置: 首页 > 知识库问答 >
问题:

Ajax分页,php返回整个页面而不是分页的div

梁楷
2023-03-14

我有一个php网站,它必须以分页格式在页面上显示项目列表,我使用php实现了这一点,但现在我想在其中添加ajax功能,所以我添加了这个函数,在分页部分单击page no时调用。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');
        }
    });
 });
});

我的分页功能有点像这样:

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\">&laquo; Previous</a> ":"<span class=\"inactive\" href=\"#\">&laquo; 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 &raquo;</a>\n":"<span class=\"inactive\" href=\"#\">&raquo; 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";
}

在我想要显示分页的div的页面上,我得到的是整个页面作为响应,而不是分页的div。我已经将分页的div分离到一个单独的页面,并将其包含在显示页面上(下面添加了代码),但不起作用。

<div id="project_section">
    <?php include_once("cityPropertySearchResults.php");?>        
</div>

有人能解释一下吗?
更新:我在这里发现了类似的东西

这对链接是有效的,但是现在,所有的js文件都在一次又一次地递归加载。

谢谢你抽出时间。

共有1个答案

郜琦
2023-03-14

首先在第一个页面加载后将限制起始值指定为0,将限制起始值增加为每页的限制值,并将该值通过ajax传递,在查询中使用该限制起始值(例如SELECT*FROM tbl limit 0,10;)

 类似资料:
  • 问题内容: 我有一个将数据发送到php脚本的jquery-ajax函数,问题在于返回值,它返回整个页面而不是单个值。 感谢您的时间和帮助。 问题答案: 就是这样。您是通过AJAX进行请求的,因此您将获得其中的任何内容。 如果您想要一个特定的值,请创建一个仅输出该值的新PHP页面,然后请求该URL的内容。

  • 本文向大家介绍Ajax中responseText返回的是一个页面而不是一个值,包括了Ajax中responseText返回的是一个页面而不是一个值的使用技巧和注意事项,需要的朋友参考一下 自己在struts2中的写好了业务逻辑用response返回的内容却是一个页面的! 然后就去了百度一下,说的是将struts2的返回值设为null(return null),这是因为struts2返回的是一个页面

  • 我只是在这篇文章中寻求一些建议。我目前正在通过url中的$_GET变量使用分页。然而,我不是通过首先计算计数,然后使用LIMIT子句进行分页。取而代之的是,我检索所有要分页的值,然后将它们放在一个数组中,然后将其切片,因此数组的前10项显示在第一页上,接下来的10项显示在第二页上,等等。这种疯狂是有原因的。 但是,这导致每次用户单击不同的页码时,整个查询都会运行。 有没有可能使用jQuery/AJ

  • 我有一个html页面和一个带有Thymeleaf模板引擎的java应用程序,我正在寻找一个教程,向服务器发出请求,并根据响应仅呈现页面的一部分。 此时,我有一些按钮具有相同页面的链接,带有不同的参数,我的div是基于属性文章列表创建的(我从服务器接收基于button_id) 超文本标记语言: Java: 我希望我的按钮处理我的索引控制器,只更改文章的div,而不是刷新整个页面。 我尝试过使用aja

  • 好的,首先,我将告诉这应该如何工作:我有一个页面的图片链接下侧,点击一个图片,该链接的信息出现在另一个div。我使用jQuery/Ajax将链接id发布到一个php文件中,并将该数据返回到所选的div。链接应该分页,以便一次显示4个。 这是正在发生的事情:post部分是ok的,当我单击一个链接时,正确的数据将显示在所选的div中。我不知道如何使链接div分页虽然。我需要他们分页时,页面加载,现在当

  • 问题内容: 我正在做一些简单的测试(为更大的项目做准备),以使用JQuery AJAX调用ASP.NET WebMethod。在我的示例中,我的WebMethod返回一个简单的字符串。但是,当我尝试使用JQuery调用它时,我得到的是返回的整个HTML页面内容,而不仅仅是我的字符串。我想念什么? 客户端 : 服务器端: 问题答案: 查看此链接。我用他的其他一些帖子成功地为WCF服务。请务必查看相关