HTML5的history API,保存ajax数据
2014-09-30 14:06
369 查看
最近在学习HTML5,看到一些教程讲到H5的history API,个人觉得蛮有用的,就顺带记录下来。
有些页面上的数据是通过ajax请求后台返回,然后填充到页面上。在点击一个连接后,如果此时按浏览器的返回键,是不能获取到刚才完整的界面(因为ajax填充的数据没有被history记录下来)。在H5中,提供了几个新的history的API函数,本文主要讲以下三个函数。
(1.)window.history.pushState(data,title[,url]) //向当前history添加数据,数据的标识用url来区分,在添加数据的时候浏览器的ur参数会发生改变,但不发送请求
(2.)window.history.replaceState(data,title[,url]) //替换history数据
(3.)window.onpopstate = function(event){ //通过history前进后退,触发onpopstate事件
//event.state;//返回
}
为了方便理解,贴上代码:
前台view界面:
<html>
<body>
<nav>
<button id="home" class="active">Home</button >
<button id="center">Center</button >
</nav>
<br>
<div>
<p id="p1"></p>
</div>
</body>
</html>
<script src="jquery-1.7.2.js"></script>
<script>
$(function(){
$.get("ajax.php?request=home",function(data){
//alert(data);
$("#p1").html(data);
});
$("#home").click(function(){
$.get("ajax.php?request=home",function(data){
$("#p1").html(data);
window.history.pushState({"data":data},"home","?home");
});
});
$("#center").click(function(){
$.get("ajax.php?request=center",function(data){
$("#p1").html(data);
window.history.pushState({"data":data},"center","?center");
});
});
window.onpopstate = function(e){
if(e.state){
var data = e.state.data;
document.querySelector("#p1").innerHTML = data;
}
};
});
</script>
后台ajax.php:
<?php
function request()
{
$request = $_GET['request'];
if($request=="home")
{
echo "home";
}
if($request=="center")
{
echo "center";
}
return ;
}
request();
?>
代码比较简单,前台就是点击Home和Center两个按钮时,通过ajax从后台获取数据,从而div里面的值发生改变。在发送aja请求获取数据之后,调用pushState函数,向history添加数据,然后再点击前进(后退)按钮时触发window.onpopstate事件,如果浏览器有记录的话就把浏览器里保存的数据填充到
id为p1的段落里面。
这样每次ajax请求的值就保存下来,按前进(后退键也能看到数据了)。
新手初稿,比较粗糙。嘿嘿。
有些页面上的数据是通过ajax请求后台返回,然后填充到页面上。在点击一个连接后,如果此时按浏览器的返回键,是不能获取到刚才完整的界面(因为ajax填充的数据没有被history记录下来)。在H5中,提供了几个新的history的API函数,本文主要讲以下三个函数。
(1.)window.history.pushState(data,title[,url]) //向当前history添加数据,数据的标识用url来区分,在添加数据的时候浏览器的ur参数会发生改变,但不发送请求
(2.)window.history.replaceState(data,title[,url]) //替换history数据
(3.)window.onpopstate = function(event){ //通过history前进后退,触发onpopstate事件
//event.state;//返回
}
为了方便理解,贴上代码:
前台view界面:
<html>
<body>
<nav>
<button id="home" class="active">Home</button >
<button id="center">Center</button >
</nav>
<br>
<div>
<p id="p1"></p>
</div>
</body>
</html>
<script src="jquery-1.7.2.js"></script>
<script>
$(function(){
$.get("ajax.php?request=home",function(data){
//alert(data);
$("#p1").html(data);
});
$("#home").click(function(){
$.get("ajax.php?request=home",function(data){
$("#p1").html(data);
window.history.pushState({"data":data},"home","?home");
});
});
$("#center").click(function(){
$.get("ajax.php?request=center",function(data){
$("#p1").html(data);
window.history.pushState({"data":data},"center","?center");
});
});
window.onpopstate = function(e){
if(e.state){
var data = e.state.data;
document.querySelector("#p1").innerHTML = data;
}
};
});
</script>
后台ajax.php:
<?php
function request()
{
$request = $_GET['request'];
if($request=="home")
{
echo "home";
}
if($request=="center")
{
echo "center";
}
return ;
}
request();
?>
代码比较简单,前台就是点击Home和Center两个按钮时,通过ajax从后台获取数据,从而div里面的值发生改变。在发送aja请求获取数据之后,调用pushState函数,向history添加数据,然后再点击前进(后退)按钮时触发window.onpopstate事件,如果浏览器有记录的话就把浏览器里保存的数据填充到
id为p1的段落里面。
这样每次ajax请求的值就保存下来,按前进(后退键也能看到数据了)。
新手初稿,比较粗糙。嘿嘿。
相关文章推荐
- Ajax 实现在WebForm中拖动控件并即时在服务端保存状态数据 (Asp.net 2.0)(示例代码下载)
- Ajax 实现在WebForm中拖动控件并即时在服务端保存状态数据 (Asp.net 2.0)(示例代码下载)
- FireFox中使用JQuery的ajaxfileupload插件返回JSON格式数据提示保存的解决方法。
- HTML5 history API 介绍
- HTML5 history API 介绍
- Ajax 实现在WebForm中拖动控件并即时在服务端保存状态数据 (Asp.net 2.0)(示例代码下载)
- 在使用Ajax请求返回json数据的时候IE浏览器弹出下载保存对话框的解决方法
- html5使用local storage存储的数据在本地是以何种形式保存的
- 【转】HTML5 API——无刷新更新地址 history.pushState/replaceState 方法
- jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
- Ajax 实现在WebForm中拖动控件并即时在服务端保存状态数据 (Asp.net 2.0)(示例代码下载)
- SharePoint 2010中的客户端AJAX应用——保存数据至SharePoint
- 用PHP获取Google AJAX Search API 数据的代码
- 使用 HTML5 和 Ajax 开发数据驱动的交互式应用程序
- SharePoint 2010中的客户端AJAX应用——保存数据至SharePoint
- 转载:Ajax 实现在WebForm中拖动控件并即时在服务端保存状态数据 (Asp.net 2.0)(示例代码下载)
- [导入]Ajax 实现在WebForm中拖动控件并即时在服务端保存状态数据 (Asp.net 2.0)(示例代码下载)
- Android Sample Code之API Demos (Activity三):Persistent State 《保存数据SharedPreferences》
- HTML5 通信API 跨域门槛将不再高、数据推送也不再是梦
- 【HTML5初探之通信API】跨域门槛不再高、数据推送不是梦