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 相关文章推荐
提高代码性能技巧谈—以创建千行表格为例
Jul 01 Javascript
详细讲解JS节点知识
Jan 31 Javascript
浅谈javascript中for in 和 for each in的区别
Apr 23 Javascript
Bootstrap CDN和本地化环境搭建
Oct 26 Javascript
微信小程序 Windows2008 R2服务器配置TLS1.2方法
Dec 05 Javascript
基于JS实现二维码图片固定在右下角某处并跟随滚动条滚动
Feb 08 Javascript
vue中mint-ui环境搭建详细介绍
Apr 06 Javascript
JavaScript实现旋转轮播图
Aug 18 Javascript
Angular中管道操作符(|)的使用方法
Dec 15 Javascript
JavaScript使用面向对象实现的拖拽功能详解
Jun 12 Javascript
详解vue页面首次加载缓慢原因及解决方案
Nov 06 Javascript
使用vue-cli3+typescript的项目模板创建工程的教程
Feb 28 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
一个简洁的多级别论坛
2006/10/09 PHP
用php来改写404错误页让你的页面更友好
2013/01/24 PHP
深入PHP操作MongoDB的技术总结
2013/06/02 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
2014/06/30 PHP
PHP strcmp()和strcasecmp()的区别实例
2016/11/05 PHP
基于PHP+mysql实现新闻发布系统的开发
2020/08/06 PHP
document.addEventListener使用介绍
2014/03/07 Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
2014/05/08 Javascript
jquery $(document).ready()和window.onload的区别浅析
2015/02/04 Javascript
整理Javascript函数学习笔记
2015/12/01 Javascript
Three.js快速入门教程
2016/09/09 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
2017/01/29 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
Angular.js中window.onload(),$(document).ready()的写法浅析
2017/09/28 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
web前端vue实现插值文本和输出原始html
2018/01/19 Javascript
node实现基于token的身份验证
2018/04/09 Javascript
Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解
2020/04/29 Javascript
vue使用map代替Aarry数组循环遍历的方法
2020/04/30 Javascript
vue打包npm run build时候界面报错的解决
2020/08/13 Javascript
vue表单验证之禁止input输入框输入空格
2020/12/03 Vue.js
[01:03:27]NAVI vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
Python常用的文件及文件路径、目录操作方法汇总介绍
2015/05/21 Python
微信跳一跳自动运行python脚本
2018/01/08 Python
Python实现判断一行代码是否为注释的方法
2018/05/23 Python
在Python中画图(基于Jupyter notebook的魔法函数)
2019/10/28 Python
Python 一行代码能实现丧心病狂的功能
2020/01/18 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
COSETTE官网:奢华,每天
2020/03/22 全球购物
医学院四年学习生活的自我评价
2013/11/06 职场文书
班干部演讲稿
2014/04/24 职场文书
环保倡议书格式范文
2014/05/14 职场文书
党员廉洁自律承诺书
2014/05/26 职场文书
建筑结构施工求职信
2014/07/11 职场文书
2015年妇联工作总结范文
2015/04/22 职场文书