導航:首頁 > 網站優化 > seoajax分頁

seoajax分頁

發布時間:2020-11-02 13:12:15

1、asp.net ajax分頁

關於生成httprequest對象。
這段代碼相信有用。
從bingo.js里抽出來的

var _httpRequest;
if (window.XMLHttpRequest){
_httpRequest = new XMLHttpRequest();
}else if (window.ActiveXObject) {
var MSXML=['MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
for(var n=0;n<MSXML.length;n++){
try {
_httpRequest=new ActiveXObject(MSXML[n]);
break;
}catch(e){}
}
}

2、jquery ajax分頁插件 怎麼寫

包括常用的載入失敗重試,參數可配置是否能手動輸入頁碼,設置按鈕數目,可以調用多個page等等,調用代碼很簡便

<script type="text/javascript">
 var kpage;
 
 $(function () {
  tocount();
 });
 
 function tocount() {
  //初始化
  $.ajax({ url: "/Service/DBCount", type: "post", success: function (e) {
   kpage = $("#divPage").page({ dataCount: e, pageChange: topage });
  }
  });
 }
 
 function topage(i, s) {
  //數據查詢
  $("#divInfo").html("載入中...");
  $.ajax({ url: "/Service/List", type: "post", data: { PageSize: s, PageIndex: i }, success: function (r) {
   $("#tList").html(r);
   $("#divInfo").html("");
  }, error: function () {
   $("#divInfo").html("載入失敗...<a href='javascript:reload();'>重試</href>");
  }
  });
 }
 
 function reload() {
  kpage.reload();
 }
 
</script>

具體jquery.kun_page.js:

/*

---------------------------------
參數config:
 
dataCount:數據總數
 
pageSize:頁數據條數
 
maxButton:頁碼按鈕數目
  
showCustom:是否能手動輸入頁碼 
 
pageChange:頁變更事件
參數:(i,s,c)
i:pageIndex,當前頁
s:pageSize,頁數據條數
c:pageCount,總頁數
 
*/
 
(function($){
 
$.fn.page = function (config) {
 
 if (this.length != 1) {
  throw "k_page:如有多個page請調用多次!";
 }
 
  
 var defaults = { dataCount: 1, pageSize: 10, maxButton: 6, showCustom: true, pageChange: null }
 config = $.extend(defaults, config);
 
 if (config.maxButton <= 1) config.maxButton = 2;
 if (config.pageSize < 1) config.pageSize = 1;
 //按鈕數目需偶數
 if (config.maxButton % 2 != 0)
  config.maxButton++;
 
 var pageIndex = 1, pageCount, move_kf;
 
 //初始化頁數
 function initcount() {
  pageCount = config.dataCount % config.pageSize == 0 ? config.dataCount / config.pageSize : parseInt(config.dataCount / config.pageSize) + 1;
 }
 initcount();
 
 var prev = "<div class="k_p_prev">上一頁</div>", next = "<div class="k_p_next">下一頁</div>", pbody = $(""), pcustom = $("<span class="k_custom">到第  頁 </span><div class="k_btn">確定</div>"), cl = "<div class="k_cl"></div>", pipt = $("<input class="k_ipt" type="text">");
 this.empty().addClass("kun_page").append(prev);
 pipt.keypress(function (e) {
  if (e.which == 13) {
   topage("確定");
   return false;
  }
 }).appendTo(pcustom.children());
 
 if (config.pageChange) {
  this.unbind("click").bind("click", function (e) {
   var _t = $(e.target);
   if (_t[0].tagName == "DIV" && _t[0].className != "kun_page") {
    topage(_t.text());
   }
  });
 }
 
 //跳轉頁碼
 function topage(text) {
 
  switch (text) {
   case "上一頁":
    if (pageIndex - 1 < 1) {
     return;
    }
    pageIndex--;
    move_kf = "sc_r";
    break;
   case "下一頁":
    if (pageIndex + 1 > pageCount) {
     return;
    }
    pageIndex++;
    move_kf = "sc_l";
    break;
   case "確定":
 
    if (!/^d+$/.test(pipt.val())) {
     pipt.val("");
     return;
    }
    text = parseInt(pipt.val());
    if (text < 1 || text > pageCount) {
     pipt.val("");
     return;
    }
 
   default:
    var _pindex = parseInt(text);
    if (pageIndex == _pindex)
     return;
    move_kf = pageIndex < _pindex ? "sc_l" : "sc_r";
    pageIndex = _pindex;
    break;
  }
 
  gopageChange();
 }
 
 //頁變更事件
 function gopageChange() {
  if (config.pageChange) {
   if (config.dataCount != 0) {
    config.pageChange(pageIndex, config.pageSize, pageCount);
    endloading();
   }
  }
 }
 
 //非同步載入結束
 function endloading() {
  initpage();
 
 }
 
 //添加頁碼
 function initpage() {
  pbody.empty();
  var _t_maxb = config.maxButton / 2;
  //前後頁碼集合
  var _t_listp = [], _t_listn = [];
  var _min = 0, _max = pageCount;
 
  for (var i = 1; i <= _t_maxb; i++) {
   var _t_prev = pageIndex - i, _t_next = pageIndex + i;
   //當前頁碼之前的頁
   if (_t_prev > 0) {
    _t_listp.push("<div class="k_p_page">" + _t_prev + "</div>");
    if (i == _t_maxb) _min = _t_prev;
   }
   //當前頁碼之後的頁
   if (_t_next <= pageCount) {
    _t_listn.push("<div class="k_p_page">" + _t_next + "</div>");
    if (i == _t_maxb) _max = _t_next;
   }
  }
  //顯示第一頁
  if (_min > 1) pbody.append("<div class="k_p_page">1</div>");
  //顯示前 ……
  if (_min - 1 > 1) pbody.append("<em>...</em>");
 
  for (var i = _t_listp.length; i >= 0; i--) {
   pbody.append(_t_listp[i]);
  }
 
  pbody.append("<div class="k_p_page k_p_current">" + pageIndex + "</div>");
 
  for (var i = 0; i < _t_listn.length; i++) {
   pbody.append(_t_listn[i]);
  }
 
  //顯示後 ……
  if (pageCount - _max > 1) pbody.append("<em>...</em>");
 
  //顯示最後一頁
  if (_max < pageCount) pbody.append("<div class="k_p_page">" + pageCount + "</div>");
 
 }
 
 initpage();
 gopageChange();
 
 this.append(pbody).append(next);
 if (config.showCustom)
  this.append(pcustom);
 this.append(cl);
 
 return { reload: gopageChange, pageCount: pageCount, recount: function (e) {
  //重新計算頁數
  config.dataCount = e;
  pageIndex = 1;
  initcount();
  initpage();
  gopageChange();
 }
 };
 
 //console.log(_min + "*" + _max + "*" + pageCount);
}
 
 
})(jQuery)

樣式kun_page.css:

.kun_page {font-size: 12px;line-height:23px;font-family:"Microsoft YaHei";}
.kun_page .k_p_page{position:relative;}
.kun_page div {float: left;margin: 3px;border: solid 1px #ccc;cursor: pointer;color: #333;min-width:12px;text-align:center;padding:0px 5px;}
.kun_page em {display: block;float: left;margin: 2px;}
.kun_page .k_p_current {background: #ccc;color: #fff;-webkit-animation:scroll_b 300ms;animation:scroll_b 300ms;}
.kun_page .k_cl {clear: both;float: none;border: none;margin: 0px;padding: 0px;width:0px;height:0px;}
.kun_page .k_custom {display: block;float: left;margin: 3px 3px 3px 20px;}
.kun_page .k_ipt {width: 30px;height: 21px;border: solid 1px #ccc;text-align: center;vertical-align:middle;}
.kun_page .k_m{ opacity: 0; width: 1%; height: 1%;top:0px;left:0px; display:block; position: absolute; }
.kun_page .sc_l{background: -webkit-gradient(linear, 0 100%, 100% 100%, from(#CCCCCC), to(#645F5F));
 -webkit-transform:translate(-50px);-webkit-animation:scroll_k_l 300ms linear;
 background: -moz-linear-gradient(left,#CCCCCC 0%, #645F5F 100%);
 background: -ms-linear-gradient(left,#CCCCCC 0%, #645F5F 100%);
 transform:translate(-50px);animation:scroll_k_l 300ms linear;
  
 }
.kun_page .sc_r{background: -webkit-gradient(linear, 0 100%, 100% 100%, from(#645F5F), to(#CCCCCC));
 -webkit-transform:translate(50px); -webkit-animation:scroll_k_r 300ms linear;
 background: -moz-linear-gradient(left, #645F5F 0%, #CCCCCC 100%);
 background: -ms-linear-gradient(left,#CCCCCC 0%, #645F5F 100%);
 transform:translate(50px); animation:scroll_k_r 300ms linear;
 }
 
/*
animation
*/
 
@-webkit-keyframes scroll_k_l{
0%{-webkit-transform:translate(-100px);opacity:0.2;width:200%;height:100%;}
99%{-webkit-transform:translate(-20px);opacity:0;width:200%;height:100%;}
100%{-webkit-transform:translate(-20px);opacity:0;width:1%;height:1%;}
}
 
@-webkit-keyframes scroll_k_r{
0%{-webkit-transform:translate(100px);opacity:0.2;width:200%;height:100%;}
99%{-webkit-transform:translate(20px);opacity:0;width:200%;height:100%;}
100%{-webkit-transform:translate(20px);opacity:0;width:1%;height:1%;}
}
 
@keyframes scroll_k_l{
0%{transform:translate(-100px);opacity:0.2;width:200%;height:100%;}
99%{transform:translate(-20px);opacity:0;width:200%;height:100%;}
100%{transform:translate(-20px);opacity:0;width:1%;height:1%;}
}
 
@keyframes scroll_k_r{
0%{transform:translate(100px);opacity:0.2;width:200%;height:100%;}
99%{transform:translate(20px);opacity:0;width:200%;height:100%;}
100%{transform:translate(20px);opacity:0;width:1%;height:1%;}
}
 
 
@-webkit-keyframes scroll_b{
0%,99%{background: #fff;color: #000;}

100%{background: #ccc;color: #fff;}
}
@keyframes scroll_b{
0%,99%{background: #fff;color: #000;}
100%{background: #ccc;color: #fff;}
}

樣式和動畫都可以自己修改(好吧,動畫效果很樸素,鬧哪樣,明明想了很久好嗎)

pageChange事件裡面也沒有過多的其他處理,比如我們公司前後台處理json就有一套方案,ajax提交的參數也有處理

所以若有需求,完全可以在我的代碼上再封裝一層

3、jquery ajax非同步分頁是什麼意思

普通的分頁都是通過程序輸出一段鏈接地址,如

<a href="news.php?page=1">1</a>
<a href="news.php?page=2">2</a>
<a href="news.php?page=3">3</a>

這樣 當你點擊1,2,3鏈接頁碼的時候,會跳轉到不同的數據頁面,會有個跳轉的過程

而ajax分頁就是類似這樣

<a onclick="jump(1)" href="javascript:void(0)">1</a>function jump(id) {
    $.post('news.php',{"id":id},function(data){
        //這里處理伺服器返回的分頁列表內容
    },'json');
}

過程就是用ajax向伺服器請求資源,把資源再通過js改變到當前頁面。好處就是,無刷新,頁面不會跳轉,整個網頁資源不用重新載入,用戶體驗較好。

4、jsp如何做Ajax分頁啊?

如果你要簡單的話推薦你用ExtJs框架,這個Ajax框架使用簡單而且界面元素豐富。下載ExtJs開發包,回裡麵包括答各種控制項的使用例子,復制到你的項目然後稍作修改就行了,非常簡單,這個地址可以下載: http://58.251.57.206/down?cid=&t=2&fmt=-遇到困難可以聯系我,我寫過不少Ext的例子。8015 8703

5、PHP如何實現ajax分頁總結

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>Ajax做分頁</title> <script src="bootstrap/js/jquery-1.11.2.min.js"></script> <script src="Ajax_pag.js"></script> <script src="bootstrap/js/bootstrap.min.js"></script> <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css"/> </head> <style> .header{ margin-top: 20px; } </style> <body> <div style="margin-top: 20px; margin-top: 20px;"> 關鍵字: <input id="key" type="text" name="gjz"/> <input type="button" value="查詢" id="ck" /> </div> <table class="table table-bordered header"> <thead> <tr> <th>地區代號</th> <th>地區名稱</th> <th>父級代號</th> </tr> </thead> <tbody id="list"> </tbody> </table> <div style="margin:0 auto; width:500px;"> <ul class="pagination" id="fenye"> </ul> </div> </body></html>

6、java 使用ajax實現分頁

用ajax分頁,網路那麼你的重點就不是Java了,
你需要掌握非常好的javascript,或者是js的類庫(jquery,dojo)

後台的Java代碼是內和平常的分頁邏輯容是一樣的
只是頁面的代碼不一樣

以Jquery為例
假如這個是按下的連接

<a href="#" onclick="subpage(${xxx})">xxx</a>
//${}可以使EL表達式,或者是JSTL、OGNL,使用這個來動態確定分頁的頁碼

function subpage(pagenum){
$.ajax({
url:"分頁鏈接地址",
type:"POST",
data:"pagenum="+pagenum;
success:function(data){ //data是分頁後的數據,推薦json形式
...這里是數據返回後對頁面的響應代碼
...也就是你頁面的變動,在這個需要的是你的js功底來控製表格
...的變動,
}
});
}

7、如何通過ajax,html和php實現分頁功能呢?

寫法有很多種,比如:
html頁面中:
<div id="shi"></div>
js:
$.get("1.php",{參數},function(data)
{
$("#shi").html(data);
});

即當點擊上一頁或下一頁時觸發一回個函數,執行上面的答代碼,把返回的內容放在<div id="shi">這里</div>

data就是php 文件返回的內容;那個sql語句應該是這樣寫的吧:
select * from table order by id desc limit ($page-1)*每頁個數,($page)*每頁個數

這里用到了jquery.
其它還有一種思路,就是當第一次載入時,把所有的內容都從資料庫里讀出來了,然後在瀏覽器用js處理分頁,在php發送數據時最好用json格式,這樣更好處理

8、ajax 分頁 思想

大致思路有兩種

1.在客戶端傳遞頁碼到服務端 服務端根據頁碼在資料庫中取出相應的數據記錄
生成datase或通過我前面一片日誌裡面推薦的使用LoadTemplate方法生成string返回給客戶端
然後客戶端更新html即可,這里需要分頁的sql語句,對於access 我參考了博客園李洪根推薦的select top語句
詳細見他的blog

2.對於小數據量的分頁 如果你sql不熟 也可以將數據一次性讀取到dataset
根據頁碼 計算當前頁的記錄編號 生成子dataset 返回同上的結果即可
這樣做只涉及到簡單的數學計算 利用datatable的rows.count很容易實現
附:datatable的復制
etc:
DataTable dt2=dt.Clone();
for(int i=0;i<dt.Rows.Count;i++)
{
dt2.ImportRow(dt.Rows[i]);
}

第二種方法稍微簡單 只討論第一種方法
需要注意的是 我們在客戶端傳遞頁碼
那麼我們必須在客戶端生成相應的分頁代碼
js代碼參考

strHtml += '<span class="count">Pages: ' + this.page + ' / ' + this.pageCount + '</span>';
strHtml += '<span class="number">';
if (prevPage < 1) {
strHtml += '<span title="First Page">«</span>';
strHtml += '<span title="Prev Page">‹</span>';
} else {
strHtml += '<span title="First Page"><a href="javascript:loadpage(1)">«</a></span>';
strHtml += '<span title="Prev Page"><a href="javascript:loadpage('+prevPage+')">‹</a></span>';
}
if (this.page % 10 ==0) {
var startPage = this.page - 9;
} else {
var startPage = this.page - this.page % 10 + 1;
}
if (startPage > 10) strHtml += '<span title="Prev 10 Pages"><a href="javascript:loadpage('+ (startPage - 1) +')">...</a></span>';
for (var i = startPage; i < startPage + 10; i++) {
if (i > this.pageCount) break;
if (i == this.page) {
strHtml += '<span title="Page ' + i + '">[' + i + ']</span>';
} else {
strHtml += '<span title="Page ' + i + '"><a href="javascript:loadpage('+i+')">[' + i + ']</a></span>';
}
}
if (this.pageCount >= startPage + 10) strHtml += '<span title="Next 10 Pages"><a href="javascript:loadpage('+(startPage + 10)+')">...</a></span>';
if (nextPage > this.pageCount) {
strHtml += '<span title="Next Page">›</span>';
strHtml += '<span title="Last Page">»</span>';
} else {
strHtml += '<span title="Next Page"><a href="javascript:loadpage('+nextPage+')">›</a></span>';
strHtml += '<span title="Last Page"><a href="javascript:loadpage('+this.pageCount+')">»</a></span>';
}
strHtml += '</span><br />';
break;

上面的代碼是生成分頁的核心代碼 這樣 通過自定義的loadpage(obj)事件[obj就是點擊的頁碼]
我們可以利用ajax向服務端傳遞當前頁碼以獲取返回結果
服務端首先需要的是一個Access的分頁類 我自己寫了一個

public class AccessPager
{
//internal member
private string table=string.Empty;
private int pagesize=10;
private int pageindex=1;
private string orderkey = string.Empty;
/// <summary>
/// contrustors
/// </summary>
/// <param name="tablename"></param>
/// <param name="curpage"></param>
/// <param name="size"></param>
public AccessPager(string tablename, int curpage, int size,string key)
{
table = tablename;
pagesize = size;
pageindex = curpage;
orderkey = key;
}
/// <summary>
/// get record count
/// </summary>
/// <returns></returns>
public int recCount()
{
string sql = "select count(*) from " + table;
return (int)AccessHelper.ExecuteScalar(System.Data.CommandType.Text, sql, null);
}
/// <summary>
/// get all page count
/// </summary>
/// <returns></returns>
public int pageCount()
{
if (recCount() % pagesize == 0)
return recCount() / pagesize;
else
return (recCount() / pagesize) + 1;
}
/// <summary>
/// get dataset
/// </summary>
/// <returns></returns>
public System.Data.DataSet ExecuteDataSet()
{
string sql = string.Empty;
if (pageCount() > 1)
{
if (pageindex == 1)
sql = "select top " + pagesize.ToString() + " * from " + table + " order by " + orderkey + " desc";
else if (pageindex < pageCount())
{
int endcount = pagesize * (pageindex-1);
sql = "select top " + pagesize.ToString() + " * from " + table + " where (" + orderkey + "<(select min(" + orderkey + ") from (select top "+endcount.ToString()+" "+orderkey+" from "+table+" order by "+orderkey+" desc) as t)) order by "+orderkey+" desc";
}
else if(pageindex>=pageCount())
{
if (recCount() % pagesize == 0)
{
sql = "select top " + pagesize.ToString() + " * from " + table + " order by " + orderkey + " desc";
}
else
{
int pLeft=recCount()%pagesize;
int endcount = pagesize * (pageindex - 1);
sql = "select top " +pLeft+ " * from " + table + " where (" + orderkey + "<(select min(" + orderkey + ") from (select top " + endcount.ToString() + " " + orderkey + " from " + table + " order by " + orderkey + " desc) as t)) order by " + orderkey + " desc";
}
}
}
else
sql = "select * from " + table+" order by "+orderkey+" desc";
return AccessHelper.ExecuteDataset(sql, System.Data.CommandType.Text, null);
}
}

這樣就可以根據表名稱 排序id(我這個類只針對有編號且編號為主鍵的情況)頁碼 每頁大小取出dataset了

然後 在頁面的ajax方法中 我們 首先 默認情況下載入第一頁的數據

<div id="main">
<script language="javascript" type="text/javascript">
Blog_index.getData(1,2,_callback);
function _callback(res){
$('main').innerHTML=res.value; }
</script>
</div>
當點擊js生成的分頁控制項上的頁碼時 觸發以下事件

<script language="javascript" type="text/javascript">
function loadpage(obj){
$('main').innerHTML='<img src="../images/indicator.gif" alt="" />數據載入中......';
$('txtPageCount').value=obj;
var pg2 = new showPages('pg');
pg2.pageCount =<%=getCount(2)%>;
pg2.page= $('txtPageCount').value;
pg2.printHtml(1);
Blog_index.getData(obj,2,loadpage_callback);
}
function loadpage_callback(res){
$('main').innerHTML=res.value;
}
</script>

下面的是js生成分頁控制項的代碼

<div id="page_container">
<div id="Pages"></div>
<input id="txtPageCount" type="text" style="display:none"/>
<script language="javascript" type="text/javascript">
var pg = new showPages('pg');
pg.pageCount =<%=getCount(2)%>;
pg.page=1;
pg.printHtml(1);
</script>
</div>

9、關於ajax無刷新分頁

最好是沒次翻頁通過ajax來獲取一個你設置的值域的數據,因為如果後台數據有上千條的話,你一次請求那麼多數據,響應會很慢!
最好不要一次請求完。

10、通過ajax的方式能有效防止網頁數據被採集嗎

通過ajax能在一定程度上防止網頁數據被採集。

要想弄明白其中的原因,首先要了解網頁採集工具的工作原理,現在流行的網頁採集工具絕大多數都是讀取文檔,從文檔中採集信息。

說ajax在一定程度上可以防止網頁數據被採集是因為ajax獲取的數據一般是通過js生成標簽,這種標簽是不在文檔中的,抓取工具自然就抓取不到這些數據。

ajax和js雖然利於用戶體驗,還能在一定程度上防止網頁數據被採集,但是卻不利於優化,因為搜索引擎爬取工具的工作原理跟網頁抓取工具的原理是類似的,網頁抓取工具抓取不到的內容,搜索引擎也抓取不到,這樣就不利於網站的seo優化了。

一個網站要有自己的定位,商業型的網站要做seo優化提升搜索量,要盡量不去用ajax載入大量內容;系統型網站注重實用,可以多用ajax提升用戶體驗;內容原創性較高的網站也可以用ajax和js配合載入文檔,防止內容被抓取。

與seoajax分頁相關的知識