什么是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
}
}

Ajax 的一些概念 解析的更多相关文章

  1. mongodb基本概念解析

    MongoDB 概念解析 不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是文档.集合.数据库,下面我们挨个介绍. 下表将帮助您更容易理解Mongo中的一些概念: SQL术 ...

  2. Android中px, ppi, dpi, dp, dip, sp概念解析

    Android中px, ppi, dpi, dp, dip, sp概念解析

  3. TP框架ajax U方法不解析怎么办?

    TP框架中ajax U方法不解析 ajax U方法不解析 ajax url不解析 问题: 造成问题原因: Js 存在单独的 js文件中和html分离了.造成不解析! 解决方法: 方法一:将js放到ht ...

  4. MongoDB学习笔记—概念解析

    Mongo基本概念 下表将帮助您更容易理解Mongo中的一些概念: SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table collection ...

  5. Photoshop入门教程(一):文本新建与概念解析

    写在开头 <Photoshop实用入门>系列教程可能对于一点都没有接触过Photoshop的人来说不太容易接受,因为本教程并没有细致到教你如何使用画笔工具等一系列很基础的东西,有些地方的讲 ...

  6. RabbitMQ安装、集群搭建、概念解析

    RabbitMQ安装.集群搭建.概念解析 基本概念 为什么会产生MQ 1.解耦:采用异步方式实现业务需求达到解耦的目的. 2.缓冲流量,削峰填谷: 问:为什么会有流量冲击? 答:采用"直接调 ...

  7. Ajax、反向Ajax和WebSocket 概念

    Ajax 异步的JavaScript和XML(Asynchronous JavaScript and XML,Ajax),一种可通过JavaScript来访问的浏览器功能特性,其允许脚本向幕后的网站发 ...

  8. Asp.net Core IdentityServer4 入门教程(一):概念解析

    目录 1.IdentityServer4 是什么 2.什么是OpenID和OAuth 2.0协议 3.IdentityServer4 可以用来做什么 其他 1.IdentityServer4 是什么 ...

  9. ajax成功后XML 解析错误:格式不佳

    就是Ajax发送请求后,意图回显数据时会出现这个错误,貌似chrome浏览器不会报用火狐能看到: 可能的原因有两个,就是后台应该返回一个json格式的字符串,但是你返回的是浏览器看不懂的,也就是返回格 ...

随机推荐

  1. 在Linux系统中创建SSH服务器别名

    如果你经常通过 SSH 访问许多不同的远程系统,这个技巧将为你节省一些时间.你可以通过 SSH 为频繁访问的系统创建 SSH 别名,这样你就不必记住所有不同的用户名.主机名.SSH 端口号和 IP 地 ...

  2. 【TTS】传输表空间AIX asm -> linux asm

    [TTS]传输表空间AIX asm -> linux asm 一.1  BLOG文档结构图       一.2  前言部分   一.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌 ...

  3. Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the

    参考链接 解决方法: 修改 php.ini  : always_populate_raw_post_data = -1 PHP 5.6已经废弃了$HTTP_RAW_POST_DATA

  4. 罗技k380在iOS下无法输入英文引号

    本来打算用iPad远程控制电脑主机进行编程的,但是在键盘回来之后开始试着用的时候发现没法输入英文状态的引号. 各种更换输入法都没有用.没有英文引号还写个锤子的代码. 解决办法:设置-通用-键盘,然后将 ...

  5. CentOS6.9下手动编译并安装Python3.7.0

    CentOS6.9默认安装的python版本为2.6.6,若想安装python3以上版本,只能手工编译安装 下面介绍Python-3.7.0版本的手动编译并安装的步骤 1.下载Python-3.7.0 ...

  6. tensorflow Dataset及TFRecord一些要点【持续更新】

    关于tensorflow结合Dataset与TFRecord这方面看到挺好一篇文章: https://cloud.tencent.com/developer/article/1088751 githu ...

  7. 项目Alpha冲刺 8

    作业描述 课程: 软件工程1916|W(福州大学) 作业要求: 项目Alpha冲刺(团队) 团队名称: 火鸡堂 作业目标: 介绍第8天冲刺的项目进展.问题困难和心得体会 1.团队信息 队名:火鸡堂 队 ...

  8. 微信程序开发之-WeixinJSBridge调用

    微信的WeixinJSBridge还是很厉害的,虽然官方文档只公布了3个功能,但是还内置的很多功能没公布,但是存在.今天就好好和大家聊聊 功能1------发送给好友     代码如下: functi ...

  9. 2019牛客暑期多校训练营(第三场)G: Removing Stones(启发式分治)

    题意:给定N,表示N堆石子,每堆石子数为a[],问多少个区间,可以满足“石子总和若为偶数,那么可以两两取来自不同堆的石子,直到取完: 如果为奇数,那么排除其中一个,然后可以两两取来自不同堆的石子,直到 ...

  10. HDU4091:Zombie’s Treasure Chest (分类-数学)

    题意:给两种宝石,体积S1,S2,价值V1,V2,背包容量n,求最大收益. 所有数据都在32位整数范围内. 思路:只有两种物品的背包,显然不是常见的背包,应该从背包之外的思路下手. 1:可以猜想其中一 ...