XHR详细讨论

XHR详细讨论

2015-01-28

返回类型:

XMLHttpRequest 的详细属性

responseText:????服务器相应的主体信息,即http的body信息

responseXML: 对于大量的格式化文档,可以用XML来传输或交换,由后台程序把数据封装在XML文档中,js接收XML对象并解析

status:????服务器返回的状态码,例:200,成功

statusText: 服务器返回的状态码对应的文字描述,例如 200 ,OK中的OK

readyState: XMLHttpRequest 对象的自身状态码0-4

onreadystatechange: 事件属性绑定,当XMLHttpRequest对象的状态码发生变化是,激发的函数

?

HTTP的头信息的获取:

利用getResponseHeader(); 或者 getAllResponseHeaders(); 来获取

参数: 类型:‘Content-Type‘,‘Date‘,‘Vary‘ 的等返回信息的值

注意:服务器集群时:

????Vary 指缓存时应该判断后面的因素

?

XMLHttpRequest 的详细方法:

open("请求方式",url,同步/异步);????????

send(null/参数) 参数写法:k1=v1&k2=v2&kn=vn

setRequestHeader(key,value);????????//设置请求头信息

Abort() 忽略,不要再进行下去,到此为止

getResponseHeader(): 获取响应的某个头信息

getAllResponseHeaders(): 获取响应的所有头信息

异步原理

状态值

  1. XHR对象刚被创建时
  2. open后为1,此时已经建立连接成功
  3. 接收头信息完毕后为2
  4. ?
  5. 结束,断开连接后为4

ajax使用单线程实时插队的方法,没有使用多线程

异步不阻塞原理

?

?

Ajax实现无刷新页面注册:

script中代码:


function ajaxreg(){

//步骤1:收集表单的数据

????//步骤2:打开到后台服务器连接(POST连接)

????//步骤3:发送数据

????//步骤4:监听,回调等

????//1.制造XHR

????var xhr = createXHR();

????//2.打开POST连接

????xhr.open(‘POST‘,‘./AjaxReg.PHP‘,true);

????//4.绑定

????xhr.onreadystatechange = function(){

????????if(this.readyState == 4)

????????????alert(this.responseText);

????}

????//3.收集表单数据

????var un= document.getElementsByName(‘username‘)[0].value;

????var em= document.getElementsByName(‘email‘)[0].value;

????//4.send

????//alert("username="+un+"&email="+em);

????xhr.setRequestHeader(‘Content-Type‘,‘application/x-www-form-urlencoded‘);????????//POST 必须加上这一句

????xhr.send("username="+un+"&email="+em);

????return false;

}

?

html代码:


<h1>ajax注册</h1>

<div id="regres"></div>

<form action="AjaxReg.php" method="post" target="regzone" onsubmit="return ajaxreg();">

????<p>用户名:<input type="text" name="username" /></p>

????<p>邮件地址:<input type="text" name="email" /></p>

????<p><input type="submit" name="注册" /></p>

</form>

?

AjaxReg.PHP代码

<?php

print_r($_POST);

?>

?

?

?

?

时间: 2024-11-05 22:07:00

XHR详细讨论的相关文章

JAVA 正则表达式 (超详细)

(PS:这篇文章为转载,我不喜欢转载的但我觉得这篇文章实在是超赞了,就转了过来,这篇可以说是学习JAVA正则表达的必读篇.作者是个正真有功力的人,阅读愉快) 在Sun的JavaJDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式.正则表达式是个极端强大工具,而且在字符串模式-匹配和字符串模式-替换方面富有弹性.在Unix世界里,正则表达式几乎没有

Linux shell脚本基础学习详细介绍(完整版)二

详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续. Linux shell脚本基础已经被分成好几个部分了,这里对控制流程的内容也就马上讲完了,这是最后一部分关于here document,这里举例稍微有点复杂,我们慢慢来分析这个复杂Linux shell脚本. 6. Here documents 当要将几行文字传递给一个命令时,here docu

C++内存管理(超长,例子很详细,排版很好)

[导语] 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C++超绝的性能.本期专题将从内存管理.内存泄漏.内存回收这三个方面来探讨C++内存管理问题

ajax详细讲解

转:http://www.cnblogs.com/Garden-blog/archive/2011/03/11/1981778.html Ajax 完整教程 第 1 页 Ajax 简介 Ajax 由 HTML.JavaScript™ 技术.DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序.本文的作者是一位 Ajax 专家,他演示了这些技术如何协同工作 —— 从总体概述到细节的讨论 —— 使高效的 Web 开发成为现实.他还揭开了 Ajax

网站渗透思路全方面总结 (详细篇)

针对新手写一点渗透的小思路.小技巧,主要讲的是思路,所有不会太详细. 经常逛一些好的博客或者门户站,坚持下来,每天学一点思路,你会积累到很多东西,记住:技术需要时间沉淀. (一)针对网站程序,不考虑服务器. 一.查找注入,注意数据库用户权限和站库是否同服. 二.查找XSS,最近盲打很流行,不管怎样我们的目的是进入后台. 三.查找上传,一些能上传的页面,比如申请友链.会员头像.和一些敏感页面等等,注意查看验证方式是否能绕过,注意结合服务器的解析特性,比如典型的IIS6.0.阿帕奇等. 四.查找编辑

e = e || window.event用法细节讨论

e = e || window.event是我们在做事件处理时候区分IE和其他浏览器事件对象时常用的写法.但是这行兼容性代码有没有必要出现在所有的事件句柄中呢?标准事件调用方式需要这行代码吗?下边我们做详细讨论. 在讨论之前,如果有些忘记或者不熟悉事件对象的先参考其他资料,或者看看这个连接的资料http://wenku.baidu.com/view/400a89f4f61fb7360b4c65ca.html 这里作者把四种主要的事件调用方式总结了出来,本文的讨论也是在此之上延伸说明. <!DOC

Django模板系统(非常详细)(后台数据如何展示在前台)

前面的章节我们看到如何在视图中返回HTML,但是HTML是硬编码在Python代码中的这会导致几个问题:1,显然,任何页面的改动会牵扯到Python代码的改动网站的设计改动会比Python代码改动更频繁,所以如果我们将两者分离开会更方便2,其次,写后台Python代码与设计HTML是不同的工作,更专业的Web开发应该将两者分开页面设计者和HTML/CSS程序员不应该编辑Python代码,他们应该与HTML打交道3,程序员写Python代码同时页面设计者写HTML模板会更高效,而不是一个人等待另一

转 正则表达式超详细讲解

注**该文中的/写反的地方实践中自行改正!!! (PS:这篇文章为转载,我不喜欢转载的但我觉得这篇文章实在是超赞了,就转了过来,这篇可以说是学习JAVA正则表达的必读篇.作者是个正真有功力的人,阅读愉快) 在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式.正则表达式是个极端强大工具,而且在字符串模式-匹配和字符串模式-替换

图解MySQL5.5详细安装与配置过程

出自:http://www.dbhom.com/show.aspx?id=77&cid=9 MySQL是一个开源的关系型数据库管理系统,原由瑞典MySQL AB公司开发,目前属于Oracle公司旗下.MySQL是目前世界上开源数据库中最受欢迎的产品之一,是应用最为广泛的开源数据库.MySQL就是LAMP中的M. 本文详细讨论的是MySQL最新版MySQL5.5详细安装与配置过程.MySQL5.5安装程序可以MySQL官网下载,下载地 址:http://dev.mysql.com/download