结合AJAX的PHP开发之后退、前进和刷新

ajax|刷新

简介

  第 1 部分 介绍了如何用 Sajax、PHP 和 JavaScript 开发基本的相册。在为应用程序建立历史堆栈的过程中,我们将依靠客户端技术,并将其直接与第 1 部分的代码结合在一起。本文假设读者了解 JavaScript 和浏览器 cookie。

  在浏览器中保存状态

  在网上冲浪的时候,总是从一个页面到另一个页面,从一个站点到另一个站点。在这个过程中,Web 浏览器忠实地记录了您曾经到过何处的历史记录,创建了一条面包屑型(breadcrumbs)数字轨迹,沿着这条轨迹能够一步一步地回到出发点。后退按钮允许您回到上一个动作之前所在的位置,从这个意义上说它就是 Web 上的撤销按钮。

  Web 是一种按页划分的的媒体。浏览器工具栏中的后退和前进按钮指引着浏览器从一个页面移动到另一个页面。当 Macromedia 的 Flash 风行一时的时候,开发人员和用户发现富互联网应用程序(Rich Internet Application,RIA)打破了这种模式。用户可以在几个站点上浏览,然后登录一个基于 Flash 的网站,在这个网站上消磨几分钟。当用户单击后退按钮时,游戏结束了。用户没有回到先前的那个 Flash 站点,完全不知道到了什么地方。

  对于完全基于 Ajax 的网站 —— RIA 的另一种形式,情况也是如此。允许用户与一个页面进行多次交互的网站很容易受到后退按钮的困扰,或者受到任何历史记录按钮的困扰(就此而言)。前进和重载按钮的问题与后退按钮的问题一样。 Web 浏览器内置的内部历史记录机制是一个不可逃避的问题。出于安全的原因,开发人员不能篡改浏览器历史记录或者任何相关按钮。还有可用性的问题。设想一下,如果后退按钮突然弹出一个神秘的警告提示或者用户被打发到一个新的网站上去,用户该是多么困惑。

  构建历史堆栈

  虽然不能改变浏览器历史记录,但是可以自己构建一个在 RIA 中使用的历史记录。显然,它在某种程度上应该与浏览器的标准导航工具分开,但正如前面所说的,富应用程序在一定程度上背离了 Web 的页面到页面的标准模式。

  我们将建立一个堆栈来管理应用程序的历史事件记录,也就是说存储一个列表,在表的最后添加元素。堆栈用于按照后进先出(LIFO)的顺序存储数据。虽然回退的时候并没有删除堆栈顶部的数据,但这个模型跟我们的需要非常接近。在 JavaScript 中,堆栈可以用数组来管理。

  与堆栈在一起的还有一个指针,指示我们在堆栈中的当前位置。当我们在应用程序中单击的时候,新的事件将被压入堆栈顶部,指针指向最后添加的元素。单击应用程序的后退和前进按钮时,不会在堆栈中添加新的事件,而是移动堆栈的指针。 想一想使用后退按钮时历史堆栈中会发生什么:浏览器返回上一次查看的页面,原来不能用的前进按钮突然之间变得可用了。浏览新的页面时,前进按钮再次变成灰色。浏览器历史记录中较晚保存的元素将被弹出堆栈,新的事件被压入堆栈顶部。我们将在自己创建的历史堆栈中再现这种行为。

  我们的目标是创建一组可用的历史记录按钮:后退、前进和刷新,如图 1 所示。

 
图 1. 后退、前进和刷新的历史记录按钮显示在左侧,不可用状态显示在右侧

  可重用的设计

  JavaScript 使用非常宽松的方法创建对象和类,但仍然能够建立可重用的代码。首先列出历史堆栈需要的功能,然后用 JavaScript 建立堆栈模型。在把历史堆栈集成到相册应用程序之前,首先要建立一个简单的页面来测试其功能。这样做有两方面的好处:测试页有助于将精力集中到开发和测试类的核心功能上,建立单独的测试页可以避免混淆历史堆栈和相册的功能,从而确保可重用性。

  用 cookie 缓冲

  我们需要应用程序的历史记录在整个浏览器会话中都存在。只要用户仍在查看相册页面,历史堆栈对象就会一直存在。每当发生更改的时候,这个类就会将整个历史记录复制到浏览器 cookie 中。如果用户在同一个浏览器会话中离开该页之后又返回,那么将返回他离开该应用程序时所在的同一个位置。
[1] [2] [3] [4]  下一页

时间: 2024-10-22 23:40:19

结合AJAX的PHP开发之后退、前进和刷新的相关文章

探讨微软ASP.NET AJAX控件开发技术(服务器端)

一.简介 到目前为止,我们已经讨论了开发Ajax控件所涉及的客户端相关技术.现在,让我们来讨论此过程中与服务器端相关的一些技术. 需要说明的是,在[客户端]篇中我们的举例本质上仅是使用ASP.NET AJAX框架提供的面向对象JavaScript技术来增强了一个客户端图像组件,而没有明显涉及到AJAX技术(除了ScriptManager在后台以AJAX方式下载并管理客户端脚本代码外).所以,这个例子是简单的,仅凭客户端相关知识就可以使用这个增强控件. 但是,在实际开发中,当要增强的客户端控件涉及

使用 GWT 实现基于 Ajax 的 Web 开发

GWT 简述以及 GWT 开发 Web 应用程序的优势 Ajax 及基于 Ajax Web 应用程序开发简述 Ajax 即"Asynchronous JavaScript and XML"(异步 JavaScript 和 XML),是一种创建交互式网 页应用的网页开发技术.通过此技术,软件开发人员可以在最短的时间内开发出更小,更快的,更友好的 Web 应用系统.在传统的 web 应用中,用户填写并提交表单 (form),在提交表单时就向 web 服务器发送一个处 理请求.服务器接收用户

使用Ajax Toolkit Framework开发Dojo应用

引言 AJAX Toolkit Framework(下面简称ATF)为 Eclipse 提供 Ajax 支持,其绑定当下最流行的 AJAX 框架(Dojo, Zimbra, Rico, etc),为 Eclipse 提供整合的模块.Eclipse 用户可以使用 AJAX Toolkit Framework 来编写 AJAX 应用程序.就像在 Eclipse 中开发平常的Java 程序一样,非常方便. 我们现在就以开发 Dojo 应用为例,从快速开发 Dojo 应用,以及使用 DOM Inspec

ajaxrequest.js ajaxrequest 0.7最新版 使用AJAXRequest进行AJAX应用程序开发入门小技巧

使用AJAXRequest进行AJAX应用程序开发(1) - 初识AJAXRequest 前言 在发布了AJAXRequest类的几个版本之后,渐渐地有许多朋友用上了它,也有许多朋友问我有没有更详细的说明和示例.不过因为时间的问题以及我能想到的示例有限,一直没有多写几个示例.考虑了一下,决定写一个关于AJAXRequest的教程,希望对使用AJAXRequest类的朋友们有所帮助. 准备 在使用AJAXRequest进行AJAX开发之前,你需要做以下准备: 准备知识:JavaScript基本语法

asp.net-使用ajax进行数据修改后页面无法正常刷新

问题描述 使用ajax进行数据修改后页面无法正常刷新 我用AJAX对我查询出来的数据进行修改,之后用了window.location.reload();来刷新页面在谷歌没问题在IE却有问题,求各位帮忙看看为什么,求解决方案.我开发的模式用的是asp.net,AJAX请求都是在一般处理程序里面 解决方案 location.reload([bForceGet])参数: bForceGet, 可选参数, 默认为 false,从客户端缓存里取当前页. true, 则以GET 方式,从服务端取最新的页面,

AJAX的原理—如何做到异步和局部刷新【实现代码】_AJAX相关

Overriew: onReadyStateChange被回调函数赋值,则能实现异步调用,回调函数直接操作DOM,则能实现局部刷新.那么XMLHttpRequest的onReadyStateChange如何知道服务ready了呢?状态如何change了呢(观察者模式)?则是通过客户端对服务的状态询问(定期轮询)所实现的. 详解: 1.  XMLHttpRequest 负责与服务器端的通讯,其内部有很多重要的属性:readyStatus=4,status=200等等.当XMLHttpRequest

基于ajax实现点击加载更多无刷新载入到本页_AJAX相关

先给大家展示效果图: 效果演示 本例是分页的另外一种显示方式,并不是隐藏未显示的内容 数据库结构与<ajax 翻页>是一样的 JavaScript 代码 <script type="text/javascript"> $(document).ready(function() { var track_click = ; //track user click on "load more" button, righ now it is click

jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击_jquery

本文实例介绍了四种jquery禁用多种功能的方法 1.禁用F5刷新jQuery实例代码F5具有刷新网页的功能,可能有时候需要禁用此功能,下面就通过代码实例介绍一下如何实现此功能. 代码如下: $(document).ready(function(){ $(document).bind("keydown",function(e){ var e=window.event||e; if(e.keyCode==116){ e.keyCode = 0; return false; } }) })

安卓开发之自定义下拉刷新头部

一直用的下拉刷新库就是android-Ultra-Pull-to-Refresh,本身这个库就带有几种样式的下拉刷新头部,大家可以去git看一下,地址https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh.最为方便的是我们可以自己定制各式各样的头部.最近项目有个自定义的下拉头部,自己研究了一下.实现效果是: 开发之自定义下拉刷新头部-安卓自定义下拉刷新"> 我们要做的就是自己写一个样式xml文件,然后实现PtrUIHandler