AJAX:Asynchronous JavaScript And Xml(异步的JS和XML)

同步:客户端发起请求》服务端的处理和响应》客户端重新载入页面(循环)

异步:客户端实时请求》服务端处理和响应》客户端获得响应后局部刷新页面

异步实现的关键是,XMLHttpRequest对象的出现

创建XHR对象

var request;
if(window.XMLHttpRequest){
request = new XMLHttpRequest(); //IE7+,Firefox,Chrome,Opera,Safari
}else{
request = new ActiveXObject("Microsoft.XMLHTTP");//IE6,IE5
}

HTTP请求:无状态协议(不建立持久链接,服务器不保留记录是没有记忆),它的过程如下7步:

1、建立TCP连接

2、浏览器向服务器发送请求命令

3、浏览器发送请求头信息

4、服务器应答

5、服务器发送应答头信息

6、服务器想浏览器发送数据

7、服务器关闭TCP连接

HTTP请求的组成:请求的方法(get或post等);请求的URL;请求头(环境信息,身份验证);请求体。

HTTP响应的组成:状态码(200,304等);响应头(服务器时间,其他信息);响应体。

XHR对象的方法

open(method,url,async)//async同步还是异步,默认异步为true

send(string)

监听请求的响应是否成功

var request = new XMLHttpRequest();
request.open("GET","get.php",true);
request.send();
request.onreadystatechange=function(){
if(request.readyState===4 && request.status===200){
request.responseText//取得响应体内容
}
}

用post提交表单时,需要在open和send中间添加一个设置

request.setRequesrHeader("Content-Type","application/x-www-form-rulencoded");

json解析两种方法:

var jsonData='{"staff":[{"name":"洪七公","age":70},{"name":"郭靖","age":35}]}'
var jsonObj=eval('('+jsonData+')');//容易产生错误,不会校验json是否合法,会直接执行json中的js语句
var jsonObj=JSON.parse(jsonData);//推荐

Jquery中的$.ajax([settings])

type:类型,“POST”或“GET”,默认“GET”

url:发送请求的地址

data:是一个对象,连同请求发送到服务器的数据

dataType:预期服务器返回的数据类型,一般为json,若不指定jquery将根据http包mime信息智能判断

success:方法,请求成功的回调函数,传入返回的数据及包含成功代码的字符串

error:方法,请求失败的回调函数,传入XMLHttpRequest对象

$.ajax({
type:"GET",
url:"sever.php?number"+$("#keyword").val(),
dataType:"json",
success:function(data){
if(data.success){alert(data.msg)}
},
error:function(err){
alert("错误状态码:"+err.status)
}
})

跨域

当协议、子域名、主域名、端口号中任意一个不相同时,都算作不同域。

方法一:后端代理

方法二:JSONP(支持get,不支持post)

<!--在www.aaa.com页面中-->
<script>
function jsonp(json){
alert(json["name"])
}
</script>
<script scr="http://www.bbb.com/jsonp.js"></script>
<!--在www.bbb.com页面中-->
jsonp({'name':"洪七公","age":70})

方法三:HTML5提供的XHR2(ie10以下版本不支持)

服务端增加如下(PHP)

header("Access-Control-Allow-Origin:*")
header("Access-Control-Allow-Methods:POST,GET")

深入解析AJAX的原理的更多相关文章

  1. ajax的原理解析

    一.关于同步与异步的分析: 异步传输是面向字符的传输,它的单位是字符:而同步传输是面向比特的传输,它的单位是桢,它传输的时候要求接受方和发送方的时钟是保持一致的.而ajax就是采用的异步请求方式的. ...

  2. ajax请求原理及jquery $.ajax封装全解析

    .ajax原理: Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其中最关键的一步就是从服务器获得 ...

  3. ajax工作原理及jsonp跨域详解

    一.Ajax简介 ajax = 异步 JavaScript 和 XML. ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术.我们知道,传统的网页(不使用ajax)如果需要更新内容, ...

  4. 理解AJAX的原理

    1.原生ajax异步请求(ajax的原理) (异步请求:无跳转,无刷新....)通过XMLHttpRequst对象,向服务器发送请求.XMLHttpRequest对象具有一些属性和方法. 1.首先创建 ...

  5. ajax的原理及使用

    ajax并非是一门新的技术,而是现有技术的一种新的组合用法,即是结合异步javascript和XML,它是一种创建快速动态网页的技术.其中,异步javascript是相对于同步而言的,同步模式通常称为 ...

  6. ajax工作原理/实例

    ajax是什么? 是一种创建交互式网页应用的一种网页技术.简单来说,就是向服务器发起请求,获得数据使交互性和用户体验更好. ajax不是一种新的技术,是一些技术的集合体.有 1.XHTML和CSS 2 ...

  7. AJAX异步原理与实现

    面试时问到了这个问题,说实话我还是不理解的,只是单单会使用.所以今天我看一下,自己了解下. 看了网上前辈们写的资料,我自己总结归纳ajax的原理和流程如下: 1.AJAX创建异步对象XMLHttpRe ...

  8. Ajax工作原理

    在写这篇文章之前,曾经写过一篇关于AJAX技术的随笔,不过涉及到的方面很窄,对AJAX技术的背景.原理.优缺点等各个方面都很少涉及null.这次写这篇文章的背景是因为公司需要对内部程序员做一个培训.项 ...

  9. jQuery解析AJAX返回的html数据时碰到的问题与解决

    $.ajax({ type : "post", url : "<%=request.getContextPath()%>/ce/articledetail/m ...

随机推荐

  1. FIRST集和FOLLOW集,FIRSTVT集和LASTVT集的求法

    学习编译原理时, 这几个集合相信大家并不陌生:FIRST.FOLLOW.FIRSTVT.LASTVT. 其中First和Follow是一对,而Firstvt和Lastvt是一对. 它们的作用分别是: ...

  2. Oracle的表操作,约束

    回顾MySQL创建表语句users(id整型/name字符串/birthday日期型,默认今天)drop table if exists users;create table if not exist ...

  3. Visual Studio中的引用项目和直接引用DLL文件

    在VS中引用类库时有多种方法,其中用的最多的就是在引用时选择项目选项卡引用本解决方案下的类库项目和选择浏览选项卡直接引用类库DLL文件,实际上这两种引用方式略有不同,今天就为大家总结下. C#本地项目 ...

  4. hibernate课程 初探单表映射3-2 基本类型

    本节内容:(介绍基本类型) 1 数据类型 简介 2 时间类型 简介 3 时间类型 demo 1 hibernate类型 java类型   integer/int java.lang.Integer/i ...

  5. fstab 解析

    某些时候当Linux系统下划分了新的分区后,需要将这些分区设置为开机自动挂载,否则,Linux是无法使用新建的分区的. /etc/fstab 文件负责配置Linux开机时自动挂载的分区. Window ...

  6. Android接入支付宝支付实现

    接上篇android接入微信支付文章,这篇我们带你来接入支付宝支付服务 简介 首先要说明的是个人感觉接入支付宝比微信简单多了,很轻松的,所以同学们不要紧张~ 当然还是老规矩啦,上来肯定的贴上官网地址, ...

  7. AngularJs Type error : Cannot read property 'childNodes' of undefined

    参考博客: https://blog.csdn.net/u011127019/article/details/73087868 在AngularJs和JQuery插件共存咋项目中经常会遇到如下异常 T ...

  8. python 学习之FAQ:find 与 find_all 使用

      FAQ记录   1. 错误源码 错误源码如下 def fillUnivList(_html,_ulist): soup =BeautifulSoup(_html,'html.parser') fo ...

  9. badboy页面脚本发生错误,解决方案

    1.参考网址:https://jingyan.baidu.com/article/e9fb46e17537797520f76645.html?from=qqbrowser061108 本人亲自测试,方 ...

  10. 景安快云VPS挂载数据盘至指定目录 使得系统与数据分离

    如果我们细心的用户会发现购买景安快云VPS主机后,通过df检测看到系统盘大小与我们购买时候给的不一样,这个是很正常的事情.一般VPS主机商会通过给予系统盘和数据盘一并的数据磁盘给我们,但是默认我们看到 ...