ajxa内容

URL 。    ·asynch :如果希望使用异步连接则为 true ,否则为 false 。该参 数是可选的,默认为 true 。    ·username :如果需要身份验证,则可以在此指定用户名。该可选参数没有默认值。    ·password :如果需要身份验证,则可以在此指定口令。该可选参数没有默认值。   通常使用其中的前三个参数。事实上,即使需要异步连接,也应该指定第三个参数为 “true” 。这是默认值,但坚持明确指定请求是异步的还是同步的更容易理解。   将这些结合起来,通常会得到 下列所示的一行代码。 代码 4 getCustomerInfo() 方法的改进: function getCustomerInfo() {  var phone = document.getElementById("phone").value;  var url = "/cgi-local/lookupCustomer.php?phone=" + escape(phone);  request.open("GET", url, true); }   open() 是打开吗?  我们对 open() 方法到底做什么没有达成一 致。但它实际上并不是 打开一个请求。如果监控 XHTML/Ajax 页面及其连接脚本之间的网络和数据传递,当调用 open() 方法时将看不到任何通信。   一旦设置好了 URL ,其他就简单了。多数请求使用 GET 就够了,再加上 URL ,这就是使用 open() 方法需要的全部内容了。 发送请求  一旦用 open() 配置好之后,就可以发送请求了。幸运的是,发送请求的方法的名称要比 open() 适当,它就是 send() 。    send() 只有一个参数,就是要发送的内容。但是在考虑这个方法之前,回想一下前面已经通过 URL 本身发送过数据了: var url = "/cgi-local/lookupCustomer.jsp?phone=" + escape(phone);  虽然可以使用 send() 发送数据,但也能通过 URL 本身发送数据。事实上, GET 请求(在典型的 Ajax 应用中大约占 80% )中,用 URL 发送数据要容易得多。如果需要发送安全信息或 XML ,可能要考虑使用 send() 发送内容(关于如何使用POST方式安全的发送数据,请参考我的另外一篇文章--POST方式发送ajax请求详解 )。如果不需要通过 send() 传递数据,则只要传递 null 作为该方法的参数即可。 代码 5 getCustomerInfo() 方法的进一步改进:

function getCustomerInfo() {  var phone = document.getElementById("phone").value;  var url = "/cgi-local/lookupCustomer.php?phone=" + escape(phone);  request.open("GET", url, true);  request.send(null); } 指定回调方法  现在我们所做的只有很少一点是新的、革命性的或异步的。 必须承认, open() 方法中 “true” 这个小小的关键字建立了异步请求。但是 Ajax 和 Web 2.0 最大的秘密是什么呢?秘密就在于 XMLHttpRequest 的一个简单属性 onreadystatechange 。   首先一定要理解这些代码中的流程(如果需要请回顾 代 码 5 )。建立其请求然后发出请求。此外,因为是异步请求,所以 JavaScript 方法(例子中的 getCustomerInfo() )不会等待服务器。因此代码将继续执行,就是说,将退出该方法而把控制返回给表单。用户可以继续输入信息,应用程序不会等待服务器。   这就提出了一个有趣的问题:服务器完成了请求之后会发生什么?答案是什么也不发生,至少对现在的代码而言如此!显然这样不行,因此服务器在完成通过 XMLHttpRequest 发送给它的请求处理之后需要某种指示说明怎么做。   现在 onreadystatechange 属性该登场了。该属性允许指定一个回调函数。回调允许服务器(猜得到吗?)反向调用 Web 页面中的代码。它也给了服务器一定程度的控制权,当服务器完成请求之后,会查看 XMLHttpRequest 对象,特别是 onreadystatechange 属性。然后调用该属性指定的任何方法。之所以称为回调是因 为服务器向网页发起调用,无论网页本身在做什么。比方说,可能在用户坐在椅子上手没有碰键盘的时候调用该方法,但是也可能在用户输入、移动鼠标、滚动屏幕或者点击按钮时调用该方法。它并不关心用户在做什么。 这就是称之为异步的原因:用户在一层上操作表单,而在另一层上服务器响应请求并触发 onreadystatechange 属性指定的回调方法。    在JavaScript 中引用函数  JavaScript 是一种弱类型的语言,可以用变量引用任何东西。因此如果声明了一个 函数updatePage(),JavaScript 也将该函数名看作是一个变量。换句话说,可用变量名updatePage 在代码中引用函数。 代码 6. 设置回调方法 function getCustomerInfo() {  var phone = document.getElementById("phone").value;  var url = "/cgi-local/lookupCustomer.php?phone=" + escape(phone);  request.open("GET", url, true);  request.onreadystatechange = updatePage;  request.send(null);  }   需要特别注意的是该属性在代码中设置的位置 —— 它是在调用 send()

之前 设置的。发送请求之前必须设置该属性,这样服务器在回答完成请求之后才能查看该属性。 现在剩下的就只有编写 updatePage() 方法了。 代码 7. 检查就绪状态 function updatePage() {  if (request.readyState == 4)  if (request.status == 200)   alert("Server is done!"); } 其中 request.readyState 是 HTTP 的就绪状态,在这里我们大概需要了解这 5 种状态,关于其详细意义,我们在这就不在做深入研究了。 request.readyState == 0 :请求没有发出(在调用 open() 之前)。    request.readyState == 1 :请求已经建立但还没有发出(调用 send() 之前)。    request.readyState == 2 :请求已经发出正在处理之中(这里通常可以从响应得到 内容头部)。   request.readyState ==3 :请求已经处理,响应中通常有部分数据可用,但是服务器还没有完成响应。    request.readyState == 4 :响应已完成,可以访问服务器响应并使用它。 而接下来的 request.status 为 HTTP 状态码,为 200 的时候为正常, 400 多的时候为客户端的错误, 500 多的时候为服务器端的服务,如果您对这方面的知识感兴趣,不妨可以去借一些 HTTP 协议之类的书看看,这里也不做深入研究了。 ??读取响应文本 当我们成功做完上面的一切时,服务器最后给出了处理的响应,我们可以把响应的内容 以 responseText 或者 responseXML 形式组织返回给客户端供其调用。 responseXML 的话,要涉及到对 XML 的操作,因为 jdk 本身对 XML 的操作比较弱,不过我们可以运用第三方的包 org.jdom (网上有的下载),如果大家有兴趣,可以自己去研究,这里我们简单的给出一个 responseXML 的用法的例子 代码 8. responseText 的简单运用 function updatePage() {  if (request.readyState == 4) {   if (request.status == 200) {    var response = request.responseText.split("|");    document.getElementById("order").value = response[0];    document.getElementById("address").innerHTML = response[1].replace(/\n/g, "");   } else    alert("status is " + request.status);  } } 到现在,相信大家一定对 Ajax 有了一个系统的了解了吧,仅仅只是讲了 Ajax 的一些最基础的东西,如果您对这个有兴趣,还可以进行进一步的深入研究。

??Ajax 应用场景 然而 Ajax 不是万能的,在适合的场合使用 Ajax ,才能充分发挥它的长处,改善系统性能和用户体验,绝不可以为了技术而滥用。 Ajax 的特点在于异步交互,动态更新 web 页面,因此它的适用范围是交互较多,频繁读取数据的 web 应用。现在来看几个 Ajax 的应用实例,读者可以了解如何使用 Ajax 技术改进现有的 web 应用系统。 场景1. 数据验证 在填写表单内容时,需要保证数据的唯一性(例如新用户注册填写的用户名),因此必须对用户输入的内容进行数据验证。数据验证通常有两种方式:一种是直接填写,然后提交表单,这种方式需要将这个页面提交到服务器端进行验证,整个过程不仅时间长而且造成了服务器不必要的负担;第二种方式是改进了的验证过程,用户可以通过点击相应的验证按钮,打开新窗口查看验证结果,但是这样需要新开一个浏览器窗口或者对话框,还需要专门编写验证的页面,比较耗费系统资源。而使用 Ajax 技术,可以由 XMLHttpRequest 对象发出验证请求,根据返回的 HTTP 响应判断验证是否成功,整个过程不需要弹出新窗口,也不需要将整个页面提交到服务器,快速而又不加重服务器负担。 场景2. 按需取数据 分类树或者树形结构在 web 应用系统中使用得非常广泛,例如部门结构,文档得分类结构常常使用树形空间呈现。以前每次对分类树得操作都会引起页面重载,为了避免这种情况出现,一般不采用每次调用后台得方式,而是一次性将分类结果中得数据一次性读取出来并写入数组,然后根据用户的操作,用 JavaScript 来控制节点的呈现,这样虽然解决了操作响应速度,不重复载入页面以及避免向服务器频繁发送请求的问题,但是如果用户不对分类进行操作或者只对分类树中的一部分数据进行操作的话(这种情况很普遍的),那么读取的数据中就会有相当大的冗余,浪费了用户的资源。特别是在分类结构复杂,数据庞大的情况下,这种弊端就更加明显了。 现在应用 Ajax 改进分类树的实现机制。在初始化页面时,只获取第一级子分

类的数据并且显示;当用户点开一级分类的第一节点时,页面会通过 Ajax 向服务器请求当前分类所属的二级子分类的所有数据;如果再请求已经呈现的二级分类的某一节点时,再次向服务器请求当前分类所属的三级子分类的所有数据,以此类推。页面会根据用户的操作向服务器请求它所需要的数据,这样就不会存在数据的冗余,减少了数据下载总量。同时,更新页面时不需要重载所有内容,只更新需要更新的那部分内容即可,相对于以前后台处理并且重载的方式,大大缩短了用户的等待时间。 场景3. 自动更新页面 在 web 应用中有很多数据的变化时十分迅速的,例如最新的热点新闻,天气预报以及聊天室内容等。在 Ajax 出现之前,用户为了即使了解相应的内容必须不断刷新页面,查看是否有新的内容变化,或者页面本身实现定时刷新的功能(大多数聊天室页面就是这样做的)。有可能会发生这种情况;有一段时间网页的内容没有发生任何变化,但是用户并不知道,仍然不断的刷新页面;或者用户失去了耐心,放弃了刷新页面,却很有可能在此有新的消息出现,这样就错过了第一时间得到消息的机会。 应用 Ajax 可以改善这种这种情况,页面加载以后,会通过 Ajax 引擎在后台进行定时的轮询,向服务器发送请求,查看是否有最新的消息。如果有则将新的数据(而不是所有数据)下载并且在页面上进行动态的更新,通过一定的方式通知用户(实现这样的功能正是 JavaScript 的强项)。这样即避免了用户不断手工刷新页面的不便,也不会因为重复刷新页面造成资源浪费。

时间: 2024-10-14 07:42:58

ajxa内容的相关文章

转 Web程序优化的最佳实践(网站内容篇)

4.可缓存的 AJAX Ajax 经常被提及的一个好处就是由于其从后台服务器传输信息的异步性而为用户带来 的反馈的即时性.但是,使用 Ajax 并不能保证用户不会在等待异步的 JavaScript 和 XML 响应上花费时间.在很多应用中,用户是否需要等待响应取决于 Ajax 如何来使用.例 如,在一个基于 Web 的 Email 客户端中,用户必须等待 Ajax 返回符合他们条件的邮件 查询结果.记住一点,"异步"并不异味着"即时",这很重要. 为了提高性能,优化

通用导出excel(可控制内容)

实体类 package util; import java.sql.Timestamp; public class Book { private int bookId; private String name; private String author; private float price; private String isbn; private String pubName; private Timestamp date; public Book() { } public Book(i

原创:Docker在云家政的应用 谢绝复制粘贴内容

我们公司目前大规模使用了Docker,目前除了数据库应用,其他所有应用都在Docker容器内运行,下面我就Docker在公司的应用做一些分享.. 首先我介绍一下公司的背景,公司属于中小型创业公司,服务器数量不多,但是为了解决一些问题,我们引入了现在比较火的Docker技术. 看一下我们在没用Docker之前遇到的问题: 1.线上环境和测试环境不完全一致,导致测试好的功能上线后会出现一些BUG. 2.部署新项目步骤繁琐,批量部署运行环境后,需要根据每个项目不同的情况,手动修改配置参数. 3.新项目

Vue内容分发slot

前面的话 为了让组件可以组合,需要一种方式来混合父组件的内容与子组件自己的模板.这个过程被称为 内容分发 (或 “transclusion” ).Vue实现了一个内容分发 API,参照了当前 Web 组件规范草案,使用特殊的 <slot> 元素作为原始内容的插槽.本文将详细介绍Vue内容分发slot 编译作用域 在深入内容分发 API 之前,先明确内容在哪个作用域里编译.假定模板为 <child-component> {{ message }} </child-compone

夏令营讲课内容整理Day 0.

今年没有发纸质讲义是最气的.还好我留了点课件. 第一次用这个估计也不怎么会用,但尝试一下新事物总是好的. 前四天gty哥哥讲的内容和去年差不多,后三天zhn大佬讲的内容有点难,努力去理解吧. 毕竟知识还是需要消化的. 这里我只整理知识点,每天上午评测的题目我会单独处理. 嗯大概就是这样了. 写完后我就会考虑发到博客园里.

张书乐:死活撩不到粉丝G点,内容创业者该咋整?

内容创业的大风口来了,可不是吗!那一年不是内容创业的风口. 1980年代,是朦胧诗.报告文学和武侠:1990年代,言情与少女,新世纪里就更多了,网络文学.网络影视以及各种IP大阵,现在则是自媒体的内容创业. 只是,有时候是来赚钱的,有时候是来赚名的,总的来说,都是来赚存在感的. 文/张书乐(人民网.人民邮电报专栏作家) 新著有<微博运营完全自学手册> 各家平台都准备好了,微信公号里集合了超过千万的运营者:微博再度复活,开始分门别类的做垂直内容:连天涯社区这个老化石,都推出了天涯号,想要拉拢一把

html的一些基本内容

html基本语法 基本格式 <html> <head> <title></title> <meta /> </head> <body> </body></html> 编码规范: 一个文件有且只有一个根标签. 每个标签都是以小写字母的形式存在. 标签要进行合理的嵌套 HTML标签 标签是以尖括号"<>"包裹的,在HTML里代表特殊的含义,比如<html>.&

ASP.NET 母版页和内容页中的事件触发顺序

母版页和内容页触发事件的先后顺序,触发事件的规则一般是初始化事件是从最里边的控件到最外边的控件,其他事件则是从最外边控件到最里边控件. 下面是一个测试: 第一次触发的是母版页的Init事件. 第二次触发的是内容页的Init事件. 第三次触发的是内容页的Load事件 第四次触发的是母版页的Load事件 总结: 母版页与内容页触发事件的顺序: 1.母版页Init事件. 2.内容页Init事件. 3.内容页Load事件 4.母版页Load事件. 5.内容页PreRender事件. 6.母版页PreRe

Linux里如何查找文件内容

Linux查找文件内容的常用命令方法. 从文件内容查找匹配指定字符串的行: $ grep "被查找的字符串" 文件名例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件grep "thermcontact" */*.in 从文件内容查找与正则表达式匹配的行:$ grep –e “正则表达式” 文件名 查找时不区分大小写:$ grep –i "被查找的字符串" 文件名 查找匹配的行数:$ grep -c "被查找的字符串&quo