【问题标题】:pagination panel should remain static分页面板应保持静态
【发布时间】:2011-02-19 23:27:37
【问题描述】:

我有一个搜索表单,用户在其中输入关键字,结果会以分页方式显示。一切正常,除了当用户单击“下一步”按钮时,当页面加载以通过 ajax 检索数据时,分页面板也会消失。

如何在检索数据时使分页面板保持静态?

搜索.html:

  <form name="myform" class="wrapper">
      <input type="text" name="q" id="q" onkeyup="showPage();" class="txt_search"/>
      <input type="button" name="button" onclick="showPage();" class="button"/>
      <p> </p>
        <div id="txtHint"></div>

    </form>

ajax:

var url="search.php";
url += "?q="+str+"&page="+page+"&list=";
url += "&sid="+Math.random();
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);

function stateChanged(){
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
document.getElementById("txtHint").innerHTML=xmlHttp.responseText;
} //end if
} //end function

搜索.php:

 $self = $_SERVER['PHP_SELF'];
            $limit = 3; //Number of results per page
            $adjacents = 2;
            $numpages=ceil($totalrows/$limit);

            $query = $query." ORDER BY idQuotes LIMIT " . ($page-1)*$limit . ",$limit";
            $result = mysql_query($query, $conn)
             or die('Error:' .mysql_error());
?>

<div class="search_caption">Search Results</div>
<div class="search_div">
<table class="result">
    <?php while ($row= mysql_fetch_array($result, MYSQL_ASSOC)) {
        $cQuote =  highlightWords(htmlspecialchars($row['cQuotes']), $search_result);
        ?>
        <tr>
        . . .display results. . .
        </tr>
    <?php } ?>
</table>
</div>

<hr>
<div class="searchmain">
<?php
   //Create and print the Navigation bar
       $nav="";
       $next = $page+1;
       $prev = $page-1;
       if($page > 1) {
            $nav .= "<a onclick=\"showPage('','$prev'); return false;\" href=\"$self?page=" . $prev . "&q=" .urlencode($search_result) . "\">< Prev</a>";

            $first = "<a onclick=\"showPage('','1'); return false;\" href=\"$self?page=1&q=" .urlencode($search_result) . "\"> << </a>" ;
        }

        else {
            $nav .= "&nbsp;";
            $first = "&nbsp;";
        }

       for($i = 1 ; $i <= $numpages ; $i++) {
            if($i == $page) {
                $nav .= "<span class=\"no_link\">$i</span>";
            }else{
                $nav .= "<a onclick=\"showPage('',$i); return false;\" href=\"$self?page=" . $i . "&q=" .urlencode($search_result) . "\">$i</a>";
            }
        }

        if($page < $numpages) {
            $nav .= "<a onclick=\"showPage('','$next'); return false;\" href=\"$self?page=" . $next . "&q=" .urlencode($search_result) . "\">Next ></a>";

            $last = "<a onclick=\"showPage('','$numpages'); return false;\" href=\"$self?page=$numpages&q=" .urlencode($search_result) . "\"> >> </a>";
        }

        else {

             $nav .= "&nbsp;";
             $last = "&nbsp;";
        }

        echo  $first . $nav . $last;
?>

</div>

【问题讨论】:

    标签: php html ajax pagination


    【解决方案1】:

    不确定你的意思。只需在 showPage 函数中更改结果表而不是整个页面。

    【讨论】:

    • 好吧,假设您在 showPage() 中进行了 AJAX 调用,那么在接收数据后,您可以使用 JS 更改活动页面状态,并且只更改表格(您可能希望为它添加 ID 以便于查看向上)。您可能还想使用一些 AJAX 库——比如 sajax 或类似的东西来获得更简洁的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 2023-03-07
    • 2011-07-16
    相关资源
    最近更新 更多