AJAX的产进后退
来源:互联网 发布:易连接软件 编辑:程序博客网 时间:2024/06/10 02:33
Prototype是一个简化AJAX开发的JS类库。
官方地址:http://prototype.conio.net/
中文介绍:https://compdoc2cn.dev.java.net/prototype/html/prototype.js.cn.html
dhtml history是一个以hash(也就是url中#的后面部分)为指针保存数据的JS类库
官方地址:http://codinginparadise.org/projects/dhtml_history/
中文介绍:http://www.matrix.org.cn/resource/article/43/43972_AJAX.html
Prototype可以帮我们更快速的开发ajax应用程序,但是ajax程序有一个缺点,由于页面不刷新,所以不能使用前进后退来浏览过去的数据。
dhtml_history则帮我们解决了这个难题。他通过结合window.location.hash和一个iframe来实现了记录ajax数据。
需要注意的是,从官方下载的包里,除了JS文件,还有一个很重要的文件,叫blank.html。这个文件在某些浏览器下是必须的,你必须放到你的应用程序的同一级目录下。
下面我给一个例子(注意看代码中的注释):
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" lang="zh-CN"><head><title>Ajax History</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="author" content="SurfChen" /><script src="../scripts/prototype.js"></script><script src="../scripts/dhtmlHistory.js"></script><script type="text/javascript"><!--hash_num=0;//hash值,也就是url的#后面的字符串。可以用window.location.hash获得function sendRequest(){ hash_num++; var p='hash='+hash_num; new Ajax.Request(//把p字符串以get请求发送到data.php,并且在完成后调用callbackOnComplete, 'data.php', { method:'get', parameters:p, onComplete:callbackOnComplete } );}function callbackOnComplete(rn)//rn是xmlhttp请求成功后返回的对象{ $("data").innerHTML=rn.responseText; new_hash=hash_num; //给dhtmlHistory增加一个容器,以new_hash为指针保存返回的数据,并把hash改为#new_hash dhtmlHistory.add(new_hash,rn.responseText);}//初始化historyfunction historyInit(){ dhtmlHistory.initialize(); //建立一个监听,当有回退或前进动作发生,这个监听函数将会执行 dhtmlHistory.addListener(changeHistory); }//当有前进或后退动作发生,执行这个changeHistory//current_hash 当前的hash//v 当前hash下的值function changeHistory(new_hash,v){ $("data").innerHTML=v;}//--></script></head><body onload="historyInit();"><input type="button" value="Go" onclick="sendRequest();" /><span id="data"></span></body></html>
data.php
<?phpecho 'hash:'.
Prototype是一个简化AJAX开发的JS类库。
官方地址:http://prototype.conio.net/
中文介绍:https://compdoc2cn.dev.java.net/prototype/html/prototype.js.cn.htmldhtml history是一个以hash(也就是url中#的后面部分)为指针保存数据的JS类库
官方地址:http://codinginparadise.org/projects/dhtml_history/
中文介绍:http://www.matrix.org.cn/resource/article/43/43972_AJAX.htmlPrototype可以帮我们更快速的开发ajax应用程序,但是ajax程序有一个缺点,由于页面不刷新,所以不能使用前进后退来浏览过去的数据。
dhtml_history则帮我们解决了这个难题。他通过结合window.location.hash和一个iframe来实现了记录ajax数据。
需要注意的是,从官方下载的包里,除了JS文件,还有一个很重要的文件,叫blank.html。这个文件在某些浏览器下是必须的,你必须放到你的应用程序的同一级目录下。下面我给一个例子(注意看代码中的注释):
index.html<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" lang="zh-CN"><head><title>Ajax History</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="author" content="SurfChen" /><script src="../scripts/prototype.js"></script><script src="../scripts/dhtmlHistory.js"></script><script type="text/javascript"><!--hash_num=0;//hash值,也就是url的#后面的字符串。可以用window.location.hash获得function sendRequest(){ hash_num++; var p='hash='+hash_num; new Ajax.Request(//把p字符串以get请求发送到data.php,并且在完成后调用callbackOnComplete, 'data.php', { method:'get', parameters:p, onComplete:callbackOnComplete } );}function callbackOnComplete(rn)//rn是xmlhttp请求成功后返回的对象{ $("data").innerHTML=rn.responseText; new_hash=hash_num; //给dhtmlHistory增加一个容器,以new_hash为指针保存返回的数据,并把hash改为#new_hash dhtmlHistory.add(new_hash,rn.responseText);}//初始化historyfunction historyInit(){ dhtmlHistory.initialize(); //建立一个监听,当有回退或前进动作发生,这个监听函数将会执行 dhtmlHistory.addListener(changeHistory); }//当有前进或后退动作发生,执行这个changeHistory//current_hash 当前的hash//v 当前hash下的值function changeHistory(new_hash,v){ $("data").innerHTML=v;}//--></script></head><body onload="historyInit();"><input type="button" value="Go" onclick="sendRequest();" /><span id="data"></span></body></html>___FCKpd___1========================================<html>
<head>
<script language="JavaScript" type="text/JavaScript">var expectedHash = "";
function makeHistory(newHash) {
window.location.hash = newHash;
expectedHash = window.location.hash;
return true;}function reportOptionValue() {
var myForm = document.make_history;
var mySelect = myForm.change_year;
return mySelect.options[mySelect.selectedIndex].value;
}function setOptionValue(value) {
var myForm = document.make_history;
var mySelect = myForm.change_year;
mySelect.options[value-1].selected = true;
return true;
}function handleHistory() {
if ( window.location.hash != expectedHash ) {
expectedHash = window.location.hash;
var newoption = expectedHash.substring(6);
setOptionValue( newoption );
}
return true;
}function pollHash() {GET['hash'].rand(0,10);?>
handleHistory();
window.setInterval("handleHistory()", 1000);
return true;
}
</script>
</head>
<body language="JavaScript" onload="return pollHash()">
<form name=make_history>
<select name=change_year onchange="return makeHistory(reportOptionValue())">
<option value="year_1">Year 1</option>
<option value="year_2">Year 2</option>
</select>
</form>
</body>
</html>
___FCKpd___2
___FCKpd___3
___FCKpd___4
___FCKpd___5
___FCKpd___6
___FCKpd___7
___FCKpd___8
___FCKpd___9
___FCKpd___10
- AJAX的产进后退
- AJAX的产进后退
- AJAX的刷新和前进后退问题解决
- AJAX的刷新和前进后退问题解决
- AJAX的刷新和前进后退问题解决
- ajax 的前进 后退 问题 jquery.history
- AJAX的刷新和前进后退问题解决
- Ajax浏览器后退处理
- 在IE7下实现ajax的后退按钮的原理
- AJAX的后退页面刷新问题的解决方法(1)
- 关于ajax支持浏览器后退前进的做法
- AJAX不再是“搜索引擎杀手”(后退的实现)
- ajax异步加载页面片段的后退问题
- ajax载入与浏览器历史的前进与后退
- 新浪的“产经”
- 产品类的操作
- AJAX 前进后退刷新问题
- 封杀IE,Ajax后退功能
- datalist分页
- 完成端口与高性能服务器程序开发【转载】
- 等级、服从和变化
- C语言程序员
- AJAX的产进后退
- AJAX的产进后退
- select的用法
- Membership&RoleManager页面验证
- 如何让程序只运行一次实例
- 如果有一些引用存在于标记中,则不会重命名这些引用,要继续吗
- 文件的上传下载
- pingbackdoor的隐藏
- Settings.settings与app.config
- unicode编码表