Ajax实现异步请求
基本步骤:创建XMLHttpRequest对象-->配置发送参数-->执行发送-->处理响应
ajax 通俗讲有四个步骤
1.创建Ajax对象
2.链接到服务器
3.发送请求
4.接受返回值
1.创建对象
var xhr = null;
if(window.XMLHttpRequest){
标准浏览器
xhr = new XMLHttpRequest();
}else{
非标准浏览器IE6/7/8
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
对于前面要在if中加window判断是因为,浏览器会对未定义值的变量读取时报错 ,而对于window.variable不会报错,而是报undefined.
2.连接服务器
首先理解同步与异步
同步:事情一件一件来
异步:多件事情一起做
而ajax就是为了异步而生的,例如用户请求表单后,提交到服务器的过程,用户不用等待,可以干别的事情。。。。。。
var type = 'get';
var myurl = './data.php';
var async = false;//第三个参数默认值就是true,表示异步;false表示同步
xhr.open(type,myurl,async);
3发送请求
//发送请求
4.接受请求
主要是判断浏览器和服务器的交互进度和结果
xhr.onreadystatechange=function(){
//oAjax.readyState浏览器和服务器的交互情况
if(oAjax.readyState == 4)//读取完成
{
if(oAjax.status==200)//http状态码,用来判断是否成功接受并返回文件
{
alert(oAjax.status+" Success" +oAjax.responseText);//读取响应文件里面的TEXT
}else{
alert(oAjax.status+" NotFound");
}
}
};
A、处理响应中的status (xhr.status == 200 ):
ajax清除缓存:
//将文件名设置随系统时间改变而改变,这样可以避免浏览器缓存旧数据
oAjax.open('GET','./a.txt?t='+new Date().getTime(),true);
B、XMLHttpRequest取得响应:
(1)responseText:获得字符串形式的响应数据
(2)responseXML:获得xml形式的响应数据
(3)status和statusText:以数字和文本形式返回Http转态码
(4)getAllResponseHeader():获得所以得响应报头
(5)getResponseHeader():查询响应中的某个字段的值
(6)readState属性
"0"请求未初始化,open还未调用
"1":服务器连接已经建立,open已调用
"2":请求已接收,也就是接收到头信息了
"3":请求处理中,也就是接收到响应主体了
"4":请求已经完成,且响应就绪,响应完成了
C、注意事项:
D、阻止表单提交的几种方式:
E、Ajax-get提交:
2.配置发送函数
encodeURI作用对get参数进行编码处理,防止乱码
var param = encodeURI('?username='+uname+'&password='+pw);
xhr.open('get','./data.php'+param);
3.发送
xhr.send(null);
F、Ajax-post提交:
2.配置发送函数
xhr.open('post','./33data.php');
//设置请求头信息(对于post提交必须设置请求头)
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencode');
3.发送
var param = 'username='+uname+'&password='+pw;
xhr.send(param);
G、post和get的区别:
get | post |
2.配置发送函数
encodeURI作用对get参数进行编码处理,防止乱码
var param = encodeURI('?username='+uname+'&password='+pw);
xhr.open('get','./data.php'+param);
3.发送
xhr.send(null);
|
2.配置发送函数
xhr.open('post','./33data.php');
设置请求头信息(对于post提交必须设置请求头)
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
3.发送
var param = 'username='+uname+'&password='+pw;
xhr.send(param);
|
1、Aja的get提交数据是通过url传递参数,并且需要对参数进行编码处理
2、xhr.send();方法参数固定为null
|
1、Ajax的post提交方式通过xhr.send();
函数传递的参数发送数据,而不是通过url传递数据
2、post提交方式必须设置请求头( xhr.setRequestHeader('Content-Type','application/x-www-form-urlencode'); )
3、post提交的数据不需要进行编码处理
|
H、HTTP请求:是一种规则,无状态,无记忆:
HTTP请求过程
(1)建立TCP连接
(2)web浏览器向web服务器发送请求指令
(3)web浏览器发送请求头信息
(4)web服务器应答
(5)web服务器发送应答头信息
(6)web服务器向浏览器发送数据
(7)web服务器关闭TCP连接
I、HTTP请求的4个·组成部分:
a、HTTP请求方法或者动作(GET/POST)
b、正在请求的URL
c、请求头,包含客户环境信息、身份信息等
d、请求体(正文),包含客户提交的查询字符串信息、表单信息
J、POST和GET方法:
GET:(1)用于信息获取
(2)使用URL传递参数
(3)String<=2000个字符左右
POST:(1)用于修改服务器上的资源
(2)String<=无穷大
K、一个HTTP响应由三个部分组成:
a、一个数字和文字组成的转态码。作用:显示请求是否成功
b、响应头,包含服务器类型、日期、内容类型、长度等
c、响应体,即响应正文,字符串、HTML等
L、HTTP状态码由3个数字构成,其中首位数字定义了状态码的类型:
1^^:信息类,表示收到web请求,正在进行处理中
2^^:成功,表示用户请求被正确接收、理解和处理,如200
3^^:重定向,表示请求未成功,客户必须采取动作
4^^:客户端错误,客户提交的信息有误,如400
found:意味着请求中所引用的文档不存在
5^^:服务器错误(最难处理的问题),表示服务器不能完成请求处理,如500
Ajax实现异步请求的更多相关文章
- 掌握 Ajax,第 2 部分: 使用 JavaScript 和 Ajax 发出异步请求
转http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro2/ 掌握 Ajax,第 2 部分: 使用 JavaScript 和 Ajax 发出异步请求 ...
- MVC的Ajax的异步请求
MVC的Ajax的异步请求 在这里小写一下MVC的异步请求的一点小总结. 个人认为是有两种的,一种就是跟webform一样的,依旧是使用jQuery的$.get()方法,只是请求地址不同,webfor ...
- ajax 实现异步请求
ajax实现异步请求: function onclicks() { $.ajax( { url:'../hhh/columnSearch.do',// 跳转到 action // data: {tab ...
- AJAX的来龙去脉(由来)-如何被封装出来的--ajax发送异步请求(四步操作)
<黑马程序员_超全面的JavaWeb视频教程vedio\JavaWeb视频教程_day23_ajax> \JavaWeb视频教程_day23_ajax\day23ajax_avi\14.打 ...
- AJAX发送异步请求教程详解
AJAX 一.AJAX简介 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可 ...
- ajax的异步请求小结
如何判断是使用json还是jsp的数据传输: json字符串可以使用js,jquery,ajax,java这几种技术,页面为jsp页面,json数据为java后台传递来. 1.同步请求可以从因特网请求 ...
- JQ+AJAX 发送异步请求
1. load() ; 作用:通过ajax 请求从服务器加载数据,并添加到符合要求的节点上 用法:$node.load(请求地址,请求参数) 请求参数写法: --"username=admi ...
- ajax json 异步请求
function ajaxTest(){ if (true) { $.ajaxSettings.async = false; var dataJson; $.getJSON("/univer ...
- AJax的异步请求
AJax的处理过程 1、传统的Web请求过程: 一般的 Web 应用程序中,用户填写表单字段并单击 Submit 按钮.然后整个表单发送到服务器,服务器将它转发给处理表单的脚本(通常是 PHP 或 J ...
- ajax发送异步请求
一:得到XMLHttpRequest对象 ajax其实只需要学习XMLHttpRequest一个对象 大多数浏览器都支持: var xmlHttp = new XMLHttprequest(); IE ...
随机推荐
- UDP丢包原因总结
丢包检查方法 给每个UDP包编号,对比收发端的接收到的包.对于UDP协议层上的包,例如RTP包,可以从RTP包中读出包的序列号进行判断. 抓包.发送端和接收端分别抓包.linux下可以使用tcpdum ...
- Weblogic部署web项目代码中获取项目名为null的问题
写在前面 这个问题之前遇到一次, 时间久就忘了, 还是好记性不如烂笔头, 记一下吧.Windows下部署到Tomcat和Linux下部署到Weblogic的获取项目名写法. 关键代码 java代码 w ...
- 【spring源码学习】spring的事务管理源码学习
一.抽象概念 1.事务管理器 接口:org.springframework.transaction.PlatformTransactionManager 实现类:org.springframework ...
- 取response里 Json格式的字段值
1.
- js---用对象来放置变量和方法
在写JS的时候,可以考虑使用对象来放置命名的变量,以及常用的方法. 简单示例: var func = { name:'张三', showName:function(name){ console.log ...
- ImportError: this is MySQLdb version (1, 2, 5, 'final', 1), but _mysql is version (1, 4, 4, 'final', 0)
(flask-demo) ➜ flask-demo git:(master) ✗ pip install mysqlclient==1.2.5 DEPRECATION: Python 2.7 will ...
- 案例:执行 JavaScript 语句
隐藏百度图片 # coding=utf-8 from selenium import webdriver driver = webdriver.PhantomJS(executable_path=r' ...
- ShoeBox一个超级好用的图片切割工具
下载地址:http://renderhjs.net/shoebox/ ShoeBox是一个图片处理软件,体积很小. 我主要用第三个功能拆开图片.根据大图上的小图空白间隙来处理的. 导出后变成很多小图
- [原]部署kubernetes dashboard(二)
####################### 以下为声明 ##################### 此文档是之前做笔记在两台机上进行的实践,kubernetes处于不断开发阶段 不能保证每 ...
- 升级go mod采坑录
为了使用go mod把golang升级到了最新的1.12版本,go mod是1.11版本引入的,go mod的引入极大的方便了golang项目的依赖管理,同时把golang项目从GOPATH中解放了出 ...