细谈ajax在PHP网站中实际运用===my story
ajax技术很火,大有星火燎原之势 AJAX无疑是2005年炒的最热的Web开发技术之一,当然,这个功劳离不开Google。我只是一个普通开发者,使用AJAX的地方不是特别多,我就简单的把我使用心得说一下。
[AJAX介绍] Ajax是使用客户端脚本与Web服务器交换数据的Web应用开发方法。Web页面不用打断交互流程进行重新加裁,就可以动态地更新。使用Ajax,用户可以创建接近本地桌面应用的直接、高可用、更丰富、更动态的Web用户界面。 异步JavaScript和XML(AJAX)不是什么新技术,而是使用几种现有技术——包括级联样式表(CSS)、JavaScript、XHTML、XML和可扩展样式语言转换(XSLT),开发外观及操作类似桌面软件的Web应用软件。 实例体验AJAX
一、同步交互方式和AJAX解决方案 传统的WEB应用是同步交互的方式,这种同步交互方式的处理过程如下图 什么是同步交互方式: 首先,用户向HTTP服务器提交一个处理请求。接着,服务器端接收到请求后,按照预先编写好的程序中的业务逻辑进行处理,比如和数据库服务器进行数据信息交换。最后,服务器对请求进行响应,将结果返回给客户端,返回一个HTML在浏览器中显示,通常会有CSS样式丰富页面的显示效果。 同步交互的不足之处,会给用户一种不连贯的体验,当服务器处理请求时,用户只能等待状态,页面中的显示内容只能是空白。 AJAX解决方案 AJAX采用的异步交互的处理方式,很好的解决不连贯的用户体验,图
[AJAX执行原理] 一个Ajax交互从一个称为XMLHttpRequest的JavaScript对象开始。如同名字所暗示的,它允许一个客户端脚本来执行HTTP请求,并且将会解析一个XML格式的服务器响应。Ajax处理过程中的第一步是创建一个XMLHttpRequest实例。使用HTTP方法(GET或POST)来处理请求,并将目标URL设置到XMLHttpRequest对象上。 当你发送HTTP请求,你不希望浏览器挂起并等待服务器的响应,取而代之的是,你希望通过页面继续响应用户的界面交互,并在服务器响应真正到达后处理它们。要完成它,你可以向XMLHttpRequest注册一个回调函数,并异步地派发XMLHttpRequest请求。控制权马上就被返回到浏览器,当服务器响应到达时,回调函数将会被调用。 ajax插件安装,先谈谈ajax在asp.net的安装,
比如你开发asp.net项目,项目中用到了Ajax无刷新操作,所以把这一段时间对Ajax的学习做一个总结,先讲一下,在asp.net中使用Ajax的方法(AjaxControlToolkit控件的安装) 首先要在asp.net项目中使用Ajax,需要安装asp.net Ajax。ASP.NET AJAX只支持.NET 2.0以上平台。.NET 3.5中已集成,不需要安装,.NET 2.0需要安装扩展包。
我用的是VS2010即.NET 2.0,首先下载基本控件.ASPAJAXExtSetup.msi下载地址:http://download.microsoft.com/download/5/4/6/5462bcbd-e738-45fa-84ca-fa02b0c4e1c2/ASPAJAXExtSetup.msiASPAJAXExtSetup.msi由于已经打包好了,安装只需要一路next就行了,但要注意安装前关闭VS.NET,因为安装过程中需要对它做些配置。安装完成后打开VS.NET,新建一个网站,在选择模板的时候你会发现‘Visual Studio 已安装模板’中多了一个‘Asp.net AJAX-Enabled Web Site’,选它,然后设置‘位置’‘语言’,点‘确定’,建立一个网站项目。 在默认首页Default.aspx中,多了一个名为ScriptManager的控件,这个控件在使用AJAX时必须加入到页面中。 用vs2010打开AjaxControlToolkit.sln,然后选择如图,TemplateVSI这个项目,编译,即点右键"生成", 编译完成后,进入解压目录的TemplateVSIbin文件夹,双击AjaxControlExtender.vsi文件,在弹出的对话框里选择要安装的版本(VBC#或者全选),点'下一步'直到完成。 好了,到此安装就完成了,现在打开VS.NET 2005,新建网站时‘我的模板’中会多出个‘AJAX Control Toolkit Web Site’(见图一“我的模板左边第一个”),选择它,设置好‘位置’‘语言’,点‘确定’,新建一个网站。 打开Default.aspx,你会发现之前的ScriptManager控件变成了ToolkitScriptManager,并且在网站的bin目录中多了一个dll文件和很多文件夹,这些文件夹是为不同语言准备的资源文件。那现在都加了什么新控件呢,其实有很多,但打开‘工具箱’却并没有发现什么新的东西。这里我们需要手动添加控件到‘工具箱’。在‘工具箱’单击右键,选择‘添加选项卡’,然后输入AJAX Control Toolkit并回车,新建一个选项卡是为了方便明了。然后在这个新建的选项卡里单击右键选择‘选择项’,弹出的对话框里点‘浏览’,定位到 C:Program FilesMicrosoft ASP.NETASP.NET 2.0 AJAX ExtensionsAjaxControlToolkitAjaxControlToolkitbinRelease<这个路径不是固定的>,只要找到AjaxControlToolkit.dll,选择它就OK了,单击‘打开’--‘确定’,我们得到它了,很多的控件,今后的开发可就靠它们了。 注意: 1、现在你新建的asp.net网站也可以用Ajax控件了。实际运用,这里略。 ajax插件在PHP网站的安装,一般CMS,诸如Joomla,WordPress都配有ajax插件,直接安装。 ajax在PHP网站中实际运用 1. 初始化Ajax Ajax实际上就是调用了XMLHttpRequest对象,那么首先我们的就必须调用这个对象,我们构建一个初始化Ajax的函数: /** 你也许会说,这个代码因为要调用XMLHTTP组件,是不是只有IE浏览器能使,不是的经我试验,Firefox也是能使用的。 那么我们在执行任何Ajax操作之前,都必须先调用我们的InitAjax()函数来实例化一个Ajax对象。 2. 使用Get方式 现在我们第一步来执行一个Get请求,加入我们需要获取 /show.php?id=1的数据,那么我们应该怎么做呢? 假设有一个链接:<a href="/show.php?id=1">新闻1</a>,我点该链接的时候,不想任何刷新就能够看到链接的内容,那么我们该怎么做呢? //将链接改为: 同时构造相应的JavaScript函数: function getNews(newsID) 那么当,当用户点击“新闻1”这个链接的时候,在下面对应的层将显示获取的内容,而且页面没有任何刷新。当然,我们上面省略了show.php这个文件,我们只是假设show.php文件存在,并且能够正常工作的从数据库中把id为1的新闻提取出来。 这种方式适应于页面中任何元素,包括表单等等,其实在应用中,对表单的操作是比较多的,针对表单,更多使用的是POST方式,这个下面将讲述。 3. 使用POST方式 其实POST方式跟Get方式是比较类似的,只是在执行Ajax的时候稍有不同,我们简单讲述一下。 假设有一个用户输入资料的表单,我们在无刷新的情况下把用户资料保存到数据库中,同时给用户一个成功的提示。 //构建一个表单,表单中不需要action、method之类的属性,全部由ajax来搞定了。 我们看到上面的form表单里没有需要提交目标等信息,并且提交按钮的类型也只是button,那么所有操作都是靠onClick事件中的saveUserInfo()函数来执行了。我们描述一下这个函数: function saveUserInfo() 大致使用POST方式的过程就是这样,当然,实际开发情况可能会更复杂,这就需要开发者去慢慢琢磨。 4. 异步回调(伪Ajax方式) 一般情况下,使用Get、Post方式的Ajax我们都能够解决目前问题,只是应用复杂程度,当然,在开发中我们也许会碰到无法使用Ajax的时候,但是我们又需要模拟Ajax的效果,那么就可以使用伪Ajax的方式来实现我们的需求。 伪Ajax大致原理就是说我们还是普通的表单提交,或者别的什么的,但是我们却是把提交的值目标是一个浮动框架,这样页面就不刷新了,但是呢,我们又需要看到我们的执行结果,当然可以使用JavaScript来模拟提示信息,但是,这不是真实的,所以我们就需要我们的执行结果来异步回调,告诉我们执行结果是怎么样的。 假设我们的需求是需要上传一张图片,并且,需要知道图片上传后的状态,比如,是否上传成功、文件格式是否正确、文件大小是否正确等等。那么我们就需要我们的目标窗口把执行结果返回来给我们的窗口,这样就能够顺利的模拟一次Ajax调用的过程。 以下代码稍微多一点, 并且涉及Smarty模板技术,如果不太了解,请阅读相关技术资料。 上传文件:upload.html 处理上传的PHP文件:upload.php <?php 使用异步回调的方式过程有点复杂,但是基本实现了Ajax、以及信息提示的功能,如果接受模板的信息提示比较多,那么还可以通过设置层的方式来处理,这个随机应变吧。 启示录 这是一种非常良好的Web开发技术,虽然出现时间比较长,但是到现在才慢慢火起来,也希望带给Web开发界一次变革,让我们朝RIA(富客户端)的开发迈进,当然,任何东西有利也有弊端,如果过多的使用JavaScript,那么客户端将非常臃肿,不利于用户的浏览体验,如何在做到快速的亲前提下,还能够做到好的用户体验,这就需要Web开发者共同努力了。 开始ajax建站之旅 adiOS (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |