ホームページ  >  記事  >  ウェブフロントエンド  >  ajaxを利用したページング技術の実装手順を詳しく解説(コード付き)

ajaxを利用したページング技術の実装手順を詳しく解説(コード付き)

php中世界最好的语言
php中世界最好的语言オリジナル
2018-04-02 15:24:001751ブラウズ

今回は、ajax を使用してページング テクノロジを実装する手順について詳しく説明します (コード付き)。 。 ajax ページング レンダリングは次のとおりです:

まず、HTML コードと CSS コードを見てみましょう。テーブルとフッターが必要です:

<p id="global">
<p id="table">
 <table>
 <col width="19%">
 <col width="19%">
 <col width="19%">
 <col width="19%">
 <col width="24%">
 <tr>
 <th>日期</th>
 <th>时间</th>
 <th>事件</th>
 <th>报警画面</th>
 <th>事件备注</th>
 </tr>
 </table>
 </p>
 <p id="footer">
 <span id="summary"></span>
 <ul id="pagination">
 <li id="01">首页</li>
 <li id="02">上一页</li>
 <li id="03">下一页</li>
 <li id="04">最后一页</li>
 </ul>
 <p id="select">
 <span>跳转到 </span>
 <input type="text" name="page_num">
 <span> 页 </span>
 <input type="button" name="go_btn" value="跳转">
 </p>
 </p>
</p>

以下は CSS コードです:

#global{
 position: relative;
}
#table{
 position: absolute;
 top:19%;
 left:1.6%;
 width: 55%;
}
#table textarea{
 width: 10vw;
 height: 10vh;
 background-color: transparent;
 color: #fff;
 border-width: 0;
 text-align: center;
}
table, th, td {
 border: 0.2px solid rgba(60,166,206,0.2);
 border-collapse: collapse;
 color:rgba(60,166,206,1); 
}
th, td {
 padding: 3px;
 text-align: center;
 font-size: 1.6vmin;
}
td{
 background: rgba(2,29,54,1);
}
th{
 background: rgba(20,29,54,1);
 padding: 1.8% 0;
 color: rgba(255,255,255,0.8);
}
#footer{
 position: absolute;
 bottom:5vh;
 left:7vw;
 text-align: center;
 color: rgba(60,166,206,1);
}
#pagination{
 display: inline-block;
}
#pagination li{
 display: inline;
}
#select{
 display: inline-block;
 margin-left: 40px;
}
#select input[type="text"]{
 width: 30px;
 height: 20px;
 background-color: #000;
 border-width: 1px;
}
#select input[type="button"]{
 width: 40px;
 height: 23px;
 background: #000;
 border:none;
}
ul li{
 cursor: pointer;
}

開始日を初期化します。 、終了日、リクエスト ページ数、リクエストされたページ数、データが合計何ページあるかをバックエンドが提供するAPIデータインターフェースにajax経由で渡し、データベースからデータを取得します、そしてそれをフロントエンドに表示します:

var start_date = "2017-01-01", end_date = "2017-01-08";
var pageNo = 1;
var pageSize = 4;
var pages = 0;

テーブルのデータを取得してフロントエンドに追加する方法は?ページ分割されたデータを取得してフロントエンドに追加するにはどうすればよいですか?以下で定義した関数を使用します:

loadData(pageNo, pageSize);

この関数が API データ インターフェイスとどのように通信するかを見てみましょう:

function loadData(pageNo, pageSize){
 $(".detail").remove(); //每次重新从 API 数据接口获取数据都要先清除原先表格 `<tr>` 的内容
 $.ajax({
 url: "/history_alarm",
 type: "POST",
 data: JSON.stringify({date:date, page_num:pageNo, page_size:pageSize}),
 success:function(result){
 var results = JSON.parse(result);
 var list = results.alarm;
 var totalCount = results.alarm_count;
 pages = results.page_count;
 if(list.length != 0){
  for(var i=0; i<list.length; i++){
  var alarm_id = list[i].alarm_id;
  var alarm_pic = list[i].alarm_pic;
  var date = list[i].date;
  var event = list[i].event;
  var time = list[i].time;
  var remark = list[i].remark;
  appendData(alarm_id, alarm_pic, date, event, time, remark);
  addEvent(alarm_id);
  }
  $("#table").show();
  $("#footer").show();
  displayFooter(totalCount, pages, pageNo);
 } else{
  $("#table").hide();
  $("#footer").hide();
 }
 },
 error:function(){
 //error handle function
 }
 });
 }

loadData 関数では、他の 3 つの関数も定義しました。まず appendData を見てください:

//注意到我们将 `alarm_id` 作为 `<textarea>` 'class` 的值,也作为提交按钮 `id` 的值,这是因为我们要通过 ajax 将用户输入到某一个 `<textarea>` 的值作为参数传给后台 API 接口,由其写入数据库。
function appendData(alarm_id, alarm_pic, date, event, time, remark){
 var text = '<tr class="detail"><td>'+date+'</td><td>'+time+'</td<td>'+event+'</td>'+
  '<td><img class="img01" src=data:image/jpeg;base64,' + alarm_pic + '</td>'+
  '<td class="modity_btn"><textarea cols="5" rows="3" 
  class=&#39;+alarm_id+&#39;>'+remark+'</textarea>'+'<img id=&#39;+alarm_id+&#39; src="{{ 
  static_url("slice/modify.png") }}"></td></tr>';;
 $("#table table").append(text);
 }
//该函数定义了如何通过 ajax 将用户输入到某一个 `<textarea>` 的值作为参数传给后台 API 接口,并写入数据库
function addEvent(alarm_id){
 $("#"+alarm_id).click(function(){
 var remark = $("."+alarm_id).val();
 if(remark != ""){
 $.ajax({
  url:"/history_alarm",
  type:"POST",
  data:JSON.stringify({alarm_id:alarm_id, note:remark}),
  success:function(result){
  var results = JSON.parse(result);
  if(results.status == "ok"){
  console.log('ok');
  }
  }
 })
 }
 })
 }
function displayFooter(totalCount, pages, pageNo){
 var newText = '共' + totalCount + '条,' + '第' + pageNo + '页,' + '共' + pages + '页';
 $("#summary").text(newText);
 }

データを取得する関数が書かれています。次に、ページングの「ホームページ、前ページ、次ページ、最後のページ、ジャンプ」に対応するイベントをクリックする必要があります。考え方は次のとおりです。ユーザーがクリックしたページング内の項目ごとに、pageNo を再判定する必要があります。その後、pageNo をパラメーターとして使用して、データを再度取得するための API インターフェイスを呼び出します。

$("input[name='page_num']").keydown(function(e){ if(e.keyCode == 13){ $("input[name='go_btn']").click(); } });
$("input[name='go_btn']").click(function(){
 var goPage = $("input[name='page_num']").val();
 if(goPage >= 1 && goPage <=pages && goPage != pageNo){
  pageNo = goPage;
  loadData(pageNo, pageSize);
 } else{
  return false;
 }
});
$("#01").click(function(){
 pageNo = 1;
 loadData(pageNo, pageSize);
});
$("#04").click(function(){
 pageNo = pages;
 loadData(pageNo, pageSize);
});
$("#02").click(function(){
 if(pageNo == 1){
  return false;
 } else{
  pageNo--;
  loadData(pageNo, pageSize);
 }
});
$("#03").click(function(){
 if(pageNo == pages){
  return false;
 } else{
  pageNo++;
  loadData(pageNo, pageSize);
 }
});

この記事の事例を読んでその方法をマスターしたら、さらに興味深い内容が見つかるでしょう。php 中国語 Web サイトの他の関連記事にも注目してください。

推奨読書:

Ajax+mysqlでメッセージボード機能を作成


ajaxは3レベル連携の最も基本的な概念を実現します

以上がajaxを利用したページング技術の実装手順を詳しく解説(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。