jQuery Ajax全解析


Posted in Javascript onFebruary 13, 2017

什么是Ajax

Ajax基本概念

Ajax(Asynchronous JavaScript and XML):翻译成中文就是异步的JavaScript和XML。

从功能上来看是一种在无需重新加载整个网页的情况下能够更新部分网页的技术。

传统的网页

想要更新内容或者提交表单就要重新加载或刷新页面。

使用ajax技术的网页

通过后台服务器进行少量的数据交换,网页就可以实现异步局部跟新。

Ajax出现前

Ajax技术出现之前,是一个同步交互的世界。

同步:客户端发出请求,服务端去处理,然后响应,这一段时间客户端是处在等待的状态,当服务端处理响应完成之后呢,客户端重新加载页面,如果中间信息错误那么客户端就会再次发起请求在此等待。

Ajax出现之后

Ajax出现之后世界变了 变成了异步的世界。

那我们为什么之前不使用异步呢,是因为之前少了一个对象XMLHttpRequest对象,在这个对象出现之前网页开发都是采用同步的方式,出现之后呢发现可以进行了异步的操作,这个对象是用于后台和服器之间进行数据交换,而且这个数据的交换不会重新加载整个页面,这种情况下呢实现了在不刷新页面的情况下对局部数据的更新,有了这个对象之后呢才有了Ajax的异步加载局部刷新。

Ajax的异步加载局部刷新功能的实现

1.首先第一个问题就是XHR这个对象怎么使用

1)先实例化一个XMLHttpRequest

var request = new XMLHttpRquest();

注意:现在大部分的浏览器都支持XMLHttpRequest对象和new这种方式,但是呢在IE6及以下版本的时代中呢XHR还只是ActiveXObject

解决方法:

Var request; 
If(window.XMLHttpRequest){ 
Reuest = new XMLHttpRequest(); 
}else{ 
Request = new ActiveXObject(“Microsoft.XMLHTTP”); 
}

2)请求:

在这之前我们来看一下什么事HTTP请求

是一种计算机通过网络进行通讯的规则。

是一种无状态协议,不保留连接的相关信息,

客户端向服务器发出请求,服务器响应,之后呢连接就被关闭

一个完整的HTTP请求有七个步骤

    A.建立TCP连接

    B.客户端向服务器发送请求的命令

    C.浏览器发送请求头信息

    D.服务器给出响应

    E.服务器发送应答头信息

    F.服务器向浏览器发送数据

    G.服务器关闭TCP连接

分开来看:HTTP请求分为四个部分

HTTP请求的方法和动作(get,pos)

正在请求的URL(请求地址)

请求头(包含客户端环境信息,身份验证信息等)

请求体,请求正文。

Get请求:一般用于信息获取(http默认求求方式)

Url传参属性和值都是可见的,对所发内容大小有限制 一般在2000个字符

get请求安全的说法是因为你请求一次和请求一万次效果是一样的不会对数据造成影响。

Post请求:一般用于服务器数据修改

对所发信息没有大小限制

HTTP响应有三部分

1)一个数字和文字组成的状态吗,用来显示请求是成功还是失败

2)响应头,和请求头信息一样包含很多信息,例如服务器类型,日期时间,内容类型和长度等

3)响应体,响应正文

HTTP响应状态吗由三位数字组成,首位数字定义了状态码的类型:

1xx:信息类,表示接收到浏览器请求,正在进一步处理

2xx:成功表示用户请求被正确接受

3xx:重定向,表示没有请求成功,客户必须采取进一步的动作

4xx:客户端错误,表示客户端请求有错误404NOTFound意味着请求中所引用的文档不存在

5xx:服务器错误,表示服务器不能完成对请求的处理

通过XMLHttpRequest发送请求

1.创建

var request = new XMLHttpRquest();

2.发送请求

两个方法:

open(method,url,async),Send(string)这两种方法可以将请求发送到服务器

Request.open(get,get.php,true)
Request.Send()
Request.open(post,post.PHP,true) 
Request.Send()
Request.open(post,post.php,true) 
Request.setRequestHeader(‘Content-Type','application/x-www-form-urlencoded') 
Request.send(“name=王二狗&sex=男”);

send()中的内容是要向后台传递的参数,在get请求是通过url传递参数,所以get中send()里面的内容可以省略,post方式中不能省略,省略了之后就是无意义的请求了

setRequestHeader是用来设置请求参数的类型,form

3.获取响应

responseText:获取字符串形式的响应式数据

responseXML:

Status和statusText:以数字和文本形式返回HTTP状态吗

getAllResponseHeader():获取所有的响应报头

getResponseHeader():查询相应中的某个字段的值

在响应返回成功时得到的通知,在实际操作中要监听

readyState属性的变化,他的变化代表着服务器相应的变化

0:表示服务器请求未初始化,open还没有被调用

1:服务器连接已经建立,open已经被调用

2:请求已经被接受,接收到头部信息

3:处理中,接收到相应主体

4:请求完成,并且响应完成

Var request=new XMLHttpRequest();
Request.open(get,url,true)
Request.send();
request.onreadyState=function(){
 If(request.readeyState===4&&request.Status===200){
 做一些事情 request.responseText
 }
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript格式化数字的函数代码
Nov 30 Javascript
js里怎么取select标签里的值并修改
Dec 10 Javascript
jquery及原生js获取select下拉框选中的值示例
Oct 25 Javascript
不同编码的页面表单数据乱码问题解决方法
Feb 15 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
Mar 04 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
Mar 09 Javascript
javascript实现五星评分功能
Nov 10 Javascript
解决JavaScript数字精度丢失问题的方法
Dec 03 Javascript
详解基于Koa2开发微信二维码扫码支付相关流程
May 16 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
Aug 08 jQuery
react组件从搭建脚手架到在npm发布的步骤实现
Jan 09 Javascript
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
Jun 27 Javascript
jQuery中 bind的用法简单介绍
Feb 13 #Javascript
jquery实现轮播图效果
Feb 13 #Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
Feb 13 #Javascript
利用Javascript实现简单的转盘抽奖
Feb 13 #Javascript
简单实现js倒计时功能
Feb 13 #Javascript
基于node.js依赖express解析post请求四种数据格式
Feb 13 #Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
Feb 13 #Javascript
You might like
PHP一些常用的正则表达式字符的一些转换
2008/07/29 PHP
php中http_build_query 的一个问题
2012/03/25 PHP
php微信公众号开发之音乐信息
2018/10/20 PHP
用js实现上传图片前的预览(TX的面试题)
2007/08/14 Javascript
一个基于jQuery的树型插件(OrangeTree)使用介绍
2012/05/03 Javascript
JavaScript自定义方法实现trim()、Ltrim()、Rtrim()的功能
2013/11/03 Javascript
js实现点击链接后窗口缩小并居中的方法
2015/03/02 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
Javascript 判断两个IP是否在同一网段实例代码
2016/11/28 Javascript
jquery select2的使用心得(推荐)
2016/12/04 Javascript
微信小程序开发之Tabbar实例详解
2017/01/09 Javascript
JavaScript中transform实现数字翻页效果
2017/03/08 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
2017/06/20 Javascript
vue props传值失败 输出undefined的解决方法
2018/09/11 Javascript
vue动画打包后失效问题的解决方法
2018/09/18 Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
2019/07/07 Javascript
vue实现的封装全局filter并统一管理操作示例
2020/02/02 Javascript
Python中__call__用法实例
2014/08/29 Python
在Django的视图中使用form对象的方法
2015/07/18 Python
python编程培训 python培训靠谱吗
2018/01/17 Python
python微信跳一跳系列之自动计算跳一跳距离
2018/02/26 Python
python-docx修改已存在的Word文档的表格的字体格式方法
2018/05/08 Python
使用NumPy和pandas对CSV文件进行写操作的实例
2018/06/14 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
2020/04/23 Python
Django自带用户认证系统使用方法解析
2020/11/12 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
2021/02/22 Python
NBA欧洲商店(英国):NBA Europe Store UK
2018/07/27 全球购物
香港网上花店:FlowerAdvisor香港
2019/05/30 全球购物
一道输出判断型Java面试题
2014/10/01 面试题
优秀毕业生推荐信
2013/11/02 职场文书
供电工程专业求职信
2014/08/09 职场文书
先进典型事迹材料
2014/12/29 职场文书
初中教师德育工作总结2015
2015/05/12 职场文书
海上钢琴师的观后感
2015/06/11 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书