婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Ajax回退刷新頁面問題的解決辦法

Ajax回退刷新頁面問題的解決辦法

熱門標簽:超級大富翁地圖標注 騰訊地圖標注位置能用多久 越南河內地圖標注 地圖標注項目怎么樣 硅語電話機器人公司 ai機器人電銷資源 云呼外撥網絡電話系統 個人怎樣在百度地圖標注地名 機器人電銷騙局揭秘

Ajax 簡介:

AJAX即“Asynchronous Javascript And XML”(異步JavaScript和XML),是指一種創建交互式網頁應用的網頁開發技術。

AJAX = 異步 JavaScript和XML(標準通用標記語言的子集)。

AJAX 是一種用于創建快速動態網頁的技術。

通過在后臺與服務器進行少量數據交換,AJAX 可以使網頁實現異步更新。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。

傳統的網頁(不使用 AJAX)如果需要更新內容,必須重載整個網頁頁面。

存在問題

如果使用Firefox等瀏覽器訪問RMS網站時,我們可能會發現頁面之間的切換是通過AJAX異步請求實現的,同時頁面的URL不會發生改變,雖然可以通過頁面上的按鈕通過AJAX異步請求實現回退刷新,但是對于瀏覽器前進和后退不能支持,每當刷新與后退之后,頁面都會退到最開始的歡迎頁面。AJAX可以實現頁面的局部刷新,可以做到非常好的數據加載效果,給用戶帶來非常良好的體驗,但是AJAX不能在瀏覽器的歷史會話中保留記錄,當你點開一個頁面,AJAX各種數據加載非常快捷,例如一個列表頁面可以用異步加載來翻頁,但是如果用戶一不小心刷新了頁面,那么頁碼就得重新開始計算,一旦用戶改變了會話狀態(瀏覽器的前進、后退、刷新),那么AJAX就會丟失相關的數據。

傳統的AJAX存在如下的問題:

1、可以無刷新改變頁面內容,但無法改變頁面URL

2、不能支持通過網址直接訪問系統某一模塊,必須進過點按操作

3、回退、刷新必須開發人員自己第一,既給開發人員增加了工作量,又不符合用戶習慣

4、進而瀏覽器引入了onhashchange的接口,不支持的瀏覽器只能定時去判斷hash是否改變

5、但這種方式對搜索引擎很不友好

使用技術

為了解決傳統ajax帶來的問題,HTML5里引入了新的API,即:history.pushState,history.replaceState

可以通過pushState和replaceState接口操作瀏覽器歷史,并且改變當前頁面的URL。

pushState是將指定的URL添加到瀏覽器歷史里,replaceState是將指定的URL替換當前的URL。

history.pushState(state, title, url)

將當前URL和history.state加入到history中,并把新的state和URL添加到當前。不會造成頁面刷新。

state:與要跳轉到的URL對應的狀態信息。

title:標題(現在是被忽略,未作處理)。

url:要跳轉到的URL地址,不能跨域。

history.replaceState(state, title, url)

history.replaceState()操作類似于history.pushState(),不同之處在于replaceState()方法會修改當前歷史記錄條目而并非創建新的條目。

state:與要跳轉到的URL對應的狀態信息。

title:標題(現在是被忽略,未作處理)。

url:要跳轉到的URL地址,不能跨域。

addEventListener(type, listener)
addEventListener是一個偵聽事件并處理相應的函數。

type:事件的類型。

listener:偵聽到事件后處理事件的函數。此函數必須接受 Event對象作為其唯一的參數,并且不能返回任何結果。

解決方法

由于AJAX無刷新改變頁面內容的,所以頁面的URL始終是不變的,為了區分頁面上的各個不同內容,首先需要重新定義一下各個頁面的URL,因為RMS網站多使用$.post異步請求,我們可以用URL記錄post請求的各個參數(請求地址、傳遞參數),當瀏覽器進行刷新、回退操作時,根據URL記錄的信息自動發送post請求,進入對應頁面,從而實現希望的功能。

定義URL語法:

已如下地址為例:

“http://localhost/rms_hold/index.php/Home/Index/loadHomePage#/rms_hold/index.php/Home/ResourceRequest/getRequestPage@apply_type=1resource_name=ADM_BIZCARD!1”

“http://localhost/rms_hold/index.php/Home/Index/loadHomePage”是原先頁面的URL,如果在問題解決之前在RMS網站上進行任何點按操作,網址一直不會有任何變動。現在我們使用“#”分割網址,“#”之后就是我們所記錄的ajax請求“/rms_hold/index.php/Home/ResourceRequest/getRequestPage”是請求的地址,它由“#”與“@”分割,而在“@”與“!”之間的這是發向請求地址的各個參數,“apply_type=1”與“resource_name=ADM_BIZCARD”由“”進行分割。

刷新、回退監聽處理:

if (history.pushState) {
window.addEventListener("popstate", function() {
back_ajax_mod_url();
back_ajax_post();
if(location.href.indexOf("#")==-1){
window.location.reload();
}
});
back_ajax_mod_url();
back_ajax_post();
}

如以上代碼所示,window對象上提供了onpopstate事件,可以使用addEventListener方法監聽onpopstate事件,每當URL因為瀏覽器回退時都會對得到的URL在back_ajax_mod_url()與back_ajax_post()函數中進行解析、處理,而當瀏覽器刷新時,根據history.pushState的返回值不空,依然會對得到的URL在back_ajax_mod_url()與back_ajax_post()函數中進行解析、處理。

對外接口:

function back_ajax_mod_url(){
var url_ajax=ajaxback_url.pop();
var title ="Home | UniqueSoft RMS";
if(url_ajax){
history.pushState({ title: title }, title,location.href.split("#")[0] + "#"+ url_ajax);
}
}

介紹一下back_ajax_mod_url()函數,它與數組ajaxback_url組成對外接口,ajaxback_url是一個全局數組,用來存放需要加入到history中的URL,然后由back_ajax_mod_url()函數在無頁面刷新的情況下將當前URL和history.state加入到history中。

$("#reportTable tbody").on("click", "trtd img[alt = 'Detail']",
function() {
var id = $(this).attr("business_leave_id");
$.post("__MODULE__/ReportCenter/getReportDetailPage",{
"report_name": "ADM_TRAVEL_REP",
"item_id": id,
},
function(data) {
ajaxback_url.push("__MODULE__/ReportCenter/getReportDetailPage"+ "@" + "item_id=" + id + "" +"report_name=ADM_TRAVEL_REP");
$("#container").html(data);
back_ajax_mod_url();
});
});

以上函數是RMS系統里的一個AJAX異步請求事件,會造成頁面無刷新變化,加粗部分就是我們提供的對外接口,使用該接口后在history中會產生一條新的URL用來記錄達到該頁面的post方法。

URL解析處理器:

如下面函數所示back_ajax_post()為RMS系統的URL解析處理器,根據之前提到的URL語法,讀出頁面上改變內容的AJAX請求,并且自動發送AJAX請求,獲取需要的頁面

function back_ajax_post() {
if (location.href.indexOf("#")!= -1) {
var post_href =location.href.split("#")[1];
if (location.href.indexOf("@")!= -1) {
var post_url =post_href.split("@")[0];
var post_params =post_href.split("@")[1];
if(post_params.indexOf("!") != -1) {
var post_page_index =post_params.split("!")[1];
post_params =post_params.split("!")[0];
};
} else {
var post_url = post_href;
var post_params = "";
var post_page_index = "";
}
var get_resource_href =location.href;
if(get_resource_href.indexOf("!") != -1) {
get_resource_href =get_resource_href.split("!")[0];
};
if(get_resource_href.indexOf("resource_name=") != -1) {
var has_resource_name =get_resource_href.split("resource_name=")[1];
var siderbar_index =has_resource_name;
} else if(get_resource_href.indexOf("report_name=") != -1) {
var has_resource_name =get_resource_href.split("report_name=")[1];
var siderbar_index =has_resource_name.split("_REP")[0];
};
if (!post_page_index ||$("#personalInfo").length = 0) {
if (!post_url) {
window.location.href ="__MODULE__";
}
$.ajax({
type: "post",
url: post_url,
data: post_params,
success: function(res){
$('#pageContainer').html(res);
if(post_page_index) {
location.href= location.href.split("!")[0] + "!1";
} else {
location.href= location.href.split("!")[0];
};
},
error: function(res) {
window.location.href = "__MODULE__";
},
});
}
//for request page nextback
if (post_page_index) {
var previous_index =$(".navbar,.steps .navbar-innerul.row-fluid").find("li.active").find(".number").text();
var differ =post_page_index - previous_index;
lock_for_req_back_next =1;
if (differ > 0) {
for (var i = 0; i differ; a="" bar="" differ="-differ;" else="" for="" i="0;" if="" li="" lock_for_req_back_next="0;" resource_name="$(this).attr("href").split("resource_name=")[1];" side="" siderbar_index="=" ul.page-sidebar-menuli="" ul.sub-menu="" var=""> span.arrow').addClass('open');
$(this).parents('.sub-menu').show();
});
$(this).parent('li').parents('li').addClass('active open');
return false;
} else {
$('.sub-menu').hide();
}
});
$("ul.page-sidebar-menuli").not(".open").find("ul").hide();
}
}
/differ;>

以上所述是小編給大家介紹的Ajax回退刷新頁面問題的解決辦法的相關知識,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

您可能感興趣的文章:
  • jQuery實現AJAX定時刷新局部頁面實例
  • JS+Ajax+Jquery實現頁面無刷新分頁以及分組 超強的實現
  • 基于Jquery 解決Ajax請求的頁面 瀏覽器后退前進功能,頁面刷新功能實效問題
  • Ajax實現頁面自動刷新實例解析
  • django+js+ajax實現刷新頁面的方法
  • ajax頁面無刷新 IE下遭遇Ajax緩存導致數據不更新的問題
  • 使用ajax實現無刷新改變頁面內容和地址欄URL
  • Ajax+php數據交互并且局部刷新頁面的實現詳解
  • 淺談Ajax技術實現頁面無刷新
  • AJAX實現指定部分頁面刷新效果

標簽:海南 舟山 洛陽 林芝 遼源 鄭州 邢臺 內蒙古

巨人網絡通訊聲明:本文標題《Ajax回退刷新頁面問題的解決辦法》,本文關鍵詞  Ajax,回退,刷新,頁面,問,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Ajax回退刷新頁面問題的解決辦法》相關的同類信息!
  • 本頁收集關于Ajax回退刷新頁面問題的解決辦法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产在线看一区| 国产精品毛片无遮挡高清| 日韩精品视频网站| 日韩欧美卡一卡二| 久久久蜜桃精品| 国产亚洲欧美一区在线观看| 欧美一区二区三区免费| 精品黑人一区二区三区久久| 久久免费看少妇高潮| 久久亚洲精华国产精华液| 99久久伊人精品| 一区二区三区国产精品| 久久久久国产一区二区三区四区| 国产精品乱码久久久久久| 日韩制服丝袜av| 麻豆传媒一区二区三区| 亚洲影视在线播放| 最新欧美精品一区二区三区| 91国内精品野花午夜精品| 久草中文综合在线| 99精品久久99久久久久| 亚洲综合久久久| 天堂久久一区二区三区| 韩国午夜理伦三级不卡影院| av一区二区三区在线| 99视频一区二区| 久久久久久99久久久精品网站| 国产日本欧美一区二区| 日韩欧美一区二区视频| 中文字幕免费一区| 精油按摩中文字幕久久| 国产三级三级三级精品8ⅰ区| 久久综合久色欧美综合狠狠| 欧美亚洲一区三区| 亚洲免费av在线| 亚洲私人黄色宅男| 亚洲国产另类av| 欧美日韩不卡视频| 日韩一级免费观看| 欧美激情一区二区在线| 一区二区三区不卡视频在线观看 | 亚洲成av人片一区二区梦乃| 亚洲欧美国产77777| 不卡欧美aaaaa| 欧美一级欧美三级在线观看| 日韩限制级电影在线观看| 日本不卡的三区四区五区| 粉嫩高潮美女一区二区三区| 一二三四区精品视频| 欧美韩国日本综合| 欧美videossexotv100| 青娱乐精品在线视频| 另类欧美日韩国产在线| 一本大道久久a久久综合婷婷| 国产精品久久久久久一区二区三区 | 中文字幕第一区第二区| 国产精品99久| 欧美国产97人人爽人人喊| 美女高潮久久久| 色狠狠一区二区三区香蕉| 亚洲一区二区三区三| 一区二区三区久久| 亚洲日本免费电影| 日本韩国欧美一区二区三区| 久久99热99| 国产欧美日韩在线视频| 精品一区二区免费视频| 久久99精品国产麻豆不卡| 欧美一区二区私人影院日本| 免费高清在线视频一区·| 在线观看免费亚洲| 日韩精品色哟哟| 在线精品亚洲一区二区不卡| 久久色视频免费观看| 欧美日韩视频在线一区二区| 中文字幕一区三区| 日本精品视频一区二区三区| 麻豆精品一二三| 成人免费av网站| 麻豆国产精品777777在线| 在线电影一区二区三区| 在线视频中文字幕一区二区| 亚洲人成人一区二区在线观看| 欧美一a一片一级一片| 国产精品影视网| 久久66热偷产精品| 精品精品国产高清a毛片牛牛| 日本精品视频一区二区三区| 一区二区三区精品视频在线| 亚洲成av人片在线| 国产精品久久久久久久久晋中 | 国产一区999| 日韩国产在线一| 天堂精品中文字幕在线| 国产成人午夜电影网| 91精品国产综合久久精品图片| 亚洲精品一区二区精华| 午夜精品免费在线观看| 日本aⅴ免费视频一区二区三区 | 亚洲免费观看高清完整版在线观看熊| 欧美一级高清片在线观看| 亚洲国产成人午夜在线一区| 中文字幕不卡三区| 日韩午夜电影av| 精品久久一区二区三区| 欧美一区二区视频免费观看| 91精品视频网| 亚洲国产日韩一级| 欧美专区亚洲专区| 亚洲人吸女人奶水| 极品少妇xxxx精品少妇偷拍| 日韩午夜激情av| 色噜噜狠狠色综合中国| 精品日韩欧美在线| 午夜欧美在线一二页| 成人免费av网站| 538在线一区二区精品国产| 欧美一区二区人人喊爽| 久久亚洲捆绑美女| 日韩高清一区在线| 精品久久久久av影院| 久99久精品视频免费观看| 国产69精品久久777的优势| 在线观看欧美精品| 欧洲一区二区三区免费视频| 日韩不卡在线观看日韩不卡视频| 欧美日韩午夜在线视频| 亚洲欧洲日产国码二区| 久久精品国产精品亚洲综合| 亚洲成人动漫av| 久久先锋资源网| 国产成人亚洲精品狼色在线| 日本不卡高清视频| 欧美精品 国产精品| 亚洲中国最大av网站| 亚洲成在人线免费| 亚洲va在线va天堂| 亚洲老妇xxxxxx| 天使萌一区二区三区免费观看| 日韩一区二区三区三四区视频在线观看| 欧美丝袜第三区| 99国产麻豆精品| 精品一区二区三区在线播放| 亚洲国产精品欧美一二99| 中文字幕精品在线不卡| 亚洲欧美国产77777| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 激情综合亚洲精品| 欧美高清在线精品一区| 久久精品人人做人人爽97| 中文字幕免费不卡| 久久精品欧美一区二区三区不卡| 欧美探花视频资源| 在线综合+亚洲+欧美中文字幕| 欧美亚洲自拍偷拍| 久久综合视频网| 国产精品污污网站在线观看| 国产精品国产三级国产普通话99 | 国产高清不卡二三区| 日韩欧美在线观看一区二区三区| 麻豆精品视频在线观看视频| 亚洲伊人伊色伊影伊综合网| 国产欧美日韩在线观看| 福利电影一区二区| 日韩国产一二三区| 一区二区三区精品在线观看| 国产精品污污网站在线观看| 欧美激情中文字幕| 视频在线观看国产精品| 91在线云播放| 一区二区三区不卡视频在线观看| 97久久超碰国产精品电影| 亚洲成人精品一区| 美日韩一级片在线观看| 国产女人aaa级久久久级| 色欧美乱欧美15图片| 午夜久久久影院| 久久午夜色播影院免费高清 | 波多野结衣中文一区| 欧美丝袜丝交足nylons图片| 一区二区理论电影在线观看| 欧美日韩一区不卡| av网站免费线看精品| 国产一区二区三区四区五区美女| 色综合夜色一区| 日韩中文字幕区一区有砖一区 | 一级精品视频在线观看宜春院 | 国产在线精品一区二区三区不卡| 国产偷国产偷亚洲高清人白洁| 波多野结衣的一区二区三区| 亚洲国产日韩一区二区| 国产精品888| 成人黄色国产精品网站大全在线免费观看 | 国产精品福利电影一区二区三区四区 | 波多野结衣亚洲一区| 三级久久三级久久久| 成人欧美一区二区三区黑人麻豆| 精品国产不卡一区二区三区| 日韩一级片在线观看| av欧美精品.com|