ajax数据请求的理解
一,请求
发送请求有两种方式:get 跟 post 。
1.get仅请求数据,不需要服务端做处理,最后会返回指定的资源。
2.post可以提交数据,服务端根据提交的数据做处理,再返回数据。
二,创建XMLHttpRequest对象
要想发起一个ajax请求,首先要创建一个请求对象,该对象提供发起请求所需要的方法,并用于装载返回的数据。
创建对象的代码如下:
/*
* 创建XMLHttpRequest的方法
* @function createXMLHttpRequest
* @return XMLHttpRequest对象
*/
function createXMLHttpRequest(){
if (window.ActiveXObject){
return new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){
return new XMLHttpRequest();
}
}
三,处理监听或者数据请求和返回的状态
XMLHTTPRequest对象的readyState属性是指返回XMLHTTP请求的当前状态。
而当XMLHTTPRequest对象的readyState属性改变时,需要调用HandleStateChange函数,代码如下:
xmlHttp.onreadystatechange= HandleStateChange;
function HandleStateChange(){
if (xmlHttp.readyState == 4){
alert(xmlHttp.responseText);
}
}
注意:
readyState属性表示返回XMLHTTP请求的当前状态。
各状态值意义如下:
0 (未初始化) 对象已建立,但是尚未初始化(尚未调用open方法)
1 (初始化) 对象已建立,尚未调用send方法
2 (发送数据) send方法已调用,但是当前的状态及http头未知
3 (数据传送中) 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误,
4 (完成) 数据接收完毕,此时可以通过通过responseBody和responseText获取完整的回应数据
每一个状态的改变都会触发onreadystatechange,需要进行判断,当状态码为4时,说明数据接收完毕,可以开始进行数据处理。
四,创建请求时设置数据传输的方法和路径
创建请求时设置数据传输,有两种get和post方式。
1,get请求:
xmlHttp.open('GET','ajax.txt',true);
第一个参数为请求的方式,例如:POST、GET、PUT及PROPFIND。大小写不敏感。
第二个参数为请求的地址,可以为绝对地址也可以为相对地址。
第三个参数为布尔型,指定此请求是否为异步方式,默认为true。如果为真,当状态改变时会调用onreadystatechange属性指定的回调函数。
后面还可以再附带两个参数,仅在服务器要求验证时才提供,分别为用户名及密码。
2,post请求:
POST请求,通常会提交数据到一个后台脚本页面,如asp、php、jsp等等,页面脚本处理完成后会返回数据。如:
xmlHttp.open('POST','ajax.php',true);
注意,POST请求需要设置请求头,且请求头必须在open方法之后设置,设置请求头的方法是setRequestHeader,传递两个参数,第一个是请求头字段名,第二个参数是该字段的值,根据实际情况设置不同的值。通常会设置如下:
xmlHttp.setRequestHeader('CONTENT-TYPE','application/x-www-form-urlencoded');
五,发送请求
发送请求,方法是send()。对于GET请求,该方法不需要提供参数,如果是POST请求,则将提交的数据作为参数发送,通常是JSON格式。
下面代码表示通过send发送一个请求:
xmlHttp.send();
如果是POST数据,如发送名/值对{foo:'bar'}到服务器,可以这样写:xmlHttp.send('{"foo":"bar"}');
如果只是简单的字符串,则将整个字符串作为参数传递即可,如传递"a=b":xmlHttp.send('a=b');
六,总结
基本步骤就是:
1、创建XMLHTTPRequest对象。
2、定义状态变化时的处理函数。
3、创建请求。
4、发送请求。
ajax数据请求的理解的更多相关文章
- Ajax --- 数据请求
下面主要介绍(JS原生)数据请求的主要步骤: Ajax 数据请求步骤: 1.创建XMLHttpRequest对象 2.准备数据发送 3.执行发送 4.指定回掉函数 第一步:创建XMLHttpReque ...
- VueJS搭建简单后台管理系统框架 (二) 模拟Ajax数据请求
开发过程中,免不了需要前台与后台的交互,大部分的交互都是通过Ajax请求来完成,在服务端未完成开发时,前端需要有一个可以模拟Ajax请求的服务器. 在NodeJs环境下,通过配置express可访问的 ...
- ajax数据请求5(php格式)
ajax数据请求5(php格式): <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- ajax数据请求4(xml格式)
ajax数据请求4(xml格式): <!doctype html> <html> <head> <meta charset="utf-8" ...
- ajax数据请求3(数组json格式)
ajax数据请求3(数组json格式) <!doctype html> <html> <head> <meta charset="utf-8&quo ...
- ajax数据请求2(json格式)
ajax数据请求2(json格式) <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- AJAX数据请求
ajax数据请求需要四个步骤:(请求文本内容) 1.创建XMLHttpRequest对象: 2.打开与服务起的链接: 3.发送给服务器: 4.响应就绪. <!DOCTYPE html> & ...
- 微信小程序的ajax数据请求wx.request
微信小程序的ajax数据请求,很多同学找不到api在哪个位置,这里单独把小程序的ajax请求给列出来,微信小程序的请求就是wx.request这个api,wx.request(一些对象参数),微信小程 ...
- 同步请求和异步请求的区别,ajax异步请求如何理解
同步请求和异步请求的区别 先解释一下同步和异步的概念 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式. 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的 ...
随机推荐
- DataUml Design 教程3-模型与数据库同步
上一节我们已经建立好了数据模型,那么怎么让数据模型和数据库进行同步呢?模型同步到数据库非常简单,只需要模型绑定到数据库即可.DataUml Design目前支持和Oracle与MS Server数据库 ...
- Git使用技巧(2)-- 基本操作
常用 Git 命令清单 作者: 阮一峰 编辑更新:shifu204 日期: 2016年9月 1日 我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练 ...
- 通过Get方式传递数据
1:因为get传参数有个特点就是不能超过256字节.如果数据大的话会溢出. 解决办法: $data=json_encode($data_array); 然后在拼接超链接: <a href=&qu ...
- Eclipse 菜单
Eclipse 菜单 Eclipse 查看的菜单栏通常包含以下几个菜单: File 菜单 Edit 菜单 Navigate 菜单 Search 菜单 Project 菜单 Run 菜单 Window ...
- Python Socket 网络编程 (客户端的编程)
Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...
- codeforces(559C)--C. Gerald and Giant Chess(组合数学)
C. Gerald and Giant Chess time limit per test 2 seconds memory limit per test 256 megabytes input st ...
- Branching / Tagging
Branching / Tagging One of the features of version control systems is the ability to isolate changes ...
- hdu 2460(tarjan求边双连通分量+LCA)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2460 思路:题目的意思是要求在原图中加边后桥的数量,首先我们可以通过Tarjan求边双连通分量,对于边 ...
- CodeIgniter框架——nginx下的配置
odeigniter(CI)是一个轻量型的PHP优秀框架,但是它是在apache服务器下开发的,在nginx下需要特别的配置才可以使用. 对nginx的配置如下: server { listen 80 ...
- 【BZOJ3073】[Pa2011]Journeys 线段树+堆优化Dijkstra
[BZOJ3073][Pa2011]Journeys Description Seter建造了一个很大的星球,他准备建造N个国家和无数双向道路.N个国家很快建造好了,用1..N编号,但是他发现道路实在 ...