组合技术

适当的ajax时对已有技术和下列思想的组合

  • 语义化(X)HTML标记
  • 文档对象模型(DOM)
  • JavaScript
  • XML

不同浏览器中,公共XMLHttpRequest方法

  • open(method, url[, asynchronous [, userName[, password ]]]); 用于指定请求url,方法以及与请求相关的其他可选属性;
  • setRequestHeader(label, value); 用于给丁的label和value为请求应用的一个头部信息。该方法必须在请求的open()方法之后,且在send()方法之前调用;
  • send(content); 用于发送请求;
  • abort(); 用于停止当前的请求;
  • getAllResponseHeaders(); 返回字符串形式的完整头部信息集合;
  • getResponseHeader(label); 返回指定头部的一个单独的字符串值;

步骤

生成一次新的请求

function stateChangeListener() {

}
var request = false;
if(window.XMLHttpRequest) {
var request = new window.XMLHttpRequest();
} else if(window.ActiveXObject){
var request = new window.ActiveXObject('Microsoft.XMLHTTP');
}
if(request) {
request.onreadystatechange = stateChangeListener;
//get
request.open('GET', '/your/scritp/?var=value&var2=value', true);
request.send(null);
//post
request.open('POST', '/your/scritp/', true);
request.send('var=value&val2=value');
}

处理响应

在‘request.onreadystatechange’方法中,对'request'属性的处理

  • readyState

    • 0: 尚未初始化
    • 1: 载入中
    • 2: 载入完成
    • 3: 交互
    • 4: 完成
  • responseText: 一个在响应中返回的数据的字符串表示;
  • responseXML: 一个兼容DOM核心的文档对象(在响应是一个有效的XML文档并且设置了适当的头部信息的情况下);
  • response: 返回的结果;
  • status: 一个表示请求状态的数字代码,这些数字代码是由服务器生成的HTTP协议状态代码;
  • statusText: 与状态代码相关的一条信息;
function stateChangeListener() {
switch(request.readyState) {
case 1:
//载入中
break;
case 2:
//载入完成
break;
case 3:
//交互
break;
case 4:
//完成
if(request.status == 200) {
//对request.responseText/responseXMl处理
} else {
//request.status/statusText,错误状态码和信息
}
break;
}
}

在服务器上识别Ajax请求

在服务器看来Ajax请求和其他请求都是一样的;为了表示来自XMLHttpRequest对象的请求,可以使用请求对象的setRequestHeader()方法来发送自定义头部信息,注意设置位置

request.open('GET', '/your/scritp/?var=value&var2=value', true);
request.setRequestHeader('Sent-By','Jinks');
request.send(null);

** 请求的侦听器还可以进一步处理检查响应中是否爆好有效的头部信息,(一般是请求设置特定的头部信息后,后台返回信息的时候再设置相同的头部信息返回)**

function processSpecialRequest(request) {
if(this.readyState == 4) {
var header = request.getResponseHeader('My-Ajax-Response');
if(header == 'SpecialValue') {
//服务器响应中包含了你发送的预期值
} else {
//服务器响应了其他的值
}
}
}

返回信息的数据类型

DOM--6 向应用程序中加入ajax的更多相关文章

  1. 程序中使用ajax时,type为put,或者delete时在 IIS上没效果,发生HTTP Error 405.0 - Method Not Allowed

    其实使用put delete  是在创建webapi中基本才会使用. WebDAV 是超文本传输协议 (HTTP) 的一组扩展,为 Internet 上计算机之间的编辑和文件管理提供了标准.利用这个协 ...

  2. 微信小程序中的AJAX——POST,GET区别

    注意:发送服务器时的DATA 最终发送给服务器的数据是 String 类型,如果传入的 data 不是 String 类型,会被转换成 String .转换规则如下: 对于 GET 方法的数据,会将数 ...

  3. 用JQuery中的Ajax方法获取web service等后台程序中的方法

    用JQuery中的Ajax方法获取web service等后台程序中的方法 1.准备需要被前台html页面调用的web Service,这里我们就用ws来代替了,代码如下: using System; ...

  4. jQuery入门(4)jQuery中的Ajax应用

    jQuery入门(1)jQuery中万能的选择器 jQuery入门(2)使用jQuery操作元素的属性与样式 jQuery入门(3)事件与事件对象 jQuery入门(4)jQuery中的Ajax()应 ...

  5. 了解 JavaScript 应用程序中的内存泄漏

    简介 当处理 JavaScript 这样的脚本语言时,很容易忘记每个对象.类.字符串.数字和方法都需要分配和保留内存.语言和运行时的垃圾回收器隐藏了内存分配和释放的具体细节. 许多功能无需考虑内存管理 ...

  6. 在jsp中运用ajax实现同一界面不跳转处理事件

    目前,编写应用程序时有两种基本的选择: 桌面应用程序 Web应用程序 它们有什么区别呢?桌面应用程序一般很快(就在您的计算机上运行,不用等待互联网连接),具有漂亮的用户界面(通常和操作系统有关)和非凡 ...

  7. 深入理解ajax系列第九篇——jQuery中的ajax

    前面的话 jQuery提供了一些日常开发中需要的快捷操作,例如load.ajax.get和post等,使用jQuery开发ajax将变得极其简单.这样开发人员就可以将程序开发集中在业务和用户体验上,而 ...

  8. Applet程序组件与AJAX技术

    Applet 定义 Applet是一种运行于Web客户端环境下的Java程序组件. 工作原理 Applet以代码的形式嵌入Web页面中,用标签<applet></applet> ...

  9. JQUERY中各个ajax函数

    1.$(selecter).load()     --- load() 方法从服务器加载数据,并把返回的数据放入被选元素中 2.$.get(url,callback()) 3.$.post(url,d ...

随机推荐

  1. js事件监听器用法实例详解

    这篇文章主要介绍了js事件监听器用法,以实例形式较为详细的分析了javascript事件监听器使用注意事项与相关技巧,需要的朋友可以参考下本文实例讲述了js事件监听器用法.分享给大家供大家参考.具体分 ...

  2. WP8图片缩放功能实现

    最近在学习WP8,想实现WP微信中查看图片时的放大缩小功能. 网上找了两个解决方案: 1 利用GestureListener 这个类在Microsoft.Phone.Controls.Toolkit中 ...

  3. Android Shape自定义纯色圆角按钮

    版权声明:分享技术,传播快乐.如果本博客对你有帮助,请在我的博客首页为我打赏吧! 在Android开发中,为响应美化应用中控件的效果,使用Shape定义图形效果,可以解决图片过多的问题. 首先看一下效 ...

  4. 【linux】进程不要开太多,否则系统会卡死!

    今天在跑一个任务,大概像下面这样 python task.py -s input/ input文件夹下有两百多个文件,比如1.txt, 2.txt等等,task.py会顺序读取并做操作. 我想,这不是 ...

  5. September 19th 2016 Week 39th Monday

    We come nearest to the great when we are great in humility. 我们最为谦逊的时候越接近伟大. When you are powerful en ...

  6. AlwaysOn的认识与相关理解

    AlwaysOn技术的简要说明: SQL Server2012所支持的AlwaysOn技术集中了故障转移群集.数据库镜像和日志传送三者的优点,但又不相同.故障转移群集的单位是SQL实例,数据库镜像和日 ...

  7. SQLServer子查询

    in谓词子查询 select * from dbo.Worker where did in (select dID from DepartMent) 比较运算子查询 select * from Wor ...

  8. scala中的trait

    这里的trait字面意思是特质或者特征,这个词翻译成特征比较合适.它的意义和java,c#中接口很类似.但是trait支持部分实现,也就是说可以在scala的trait中可以实现部分方法. 下面我们以 ...

  9. 用CocoaPods做iOS程序的依赖管理(转摘)

    转摘自:http://blog.devtang.com/blog/2014/05/25/use-cocoapod-to-manage-ios-lib-dependency/ 文档更新说明 2012-1 ...

  10. <转>WCF中出现死锁或者超时

    WCF回调中的死锁 一.服务器端死锁 对于如下服务: [ServiceContract(CallbackContract = typeof(INotify))] public class Downlo ...