Ajax基本开发步骤

1. 何为ajax?有什么用?
 Ajax全称是“Asynchrous(异步) Javascript And XML”,是指一种创建交互式网页应用的的网页开发技术。是一种用于提高浏览器和服务器交互效率的快速创建动态网页技术。能够替换传统传统的web交互模式。

2. 如何理解这个同步异步?

传统同步交互模式是怎样的?
 在传统模型中,使用的是同步交互模式,客户端浏览器向服务器提出请求,然后在服务器响应这个请求之前,一直处于等待的状态,并且不能进行别的操作。
主流技术异步交互模式是怎样的?
 在Ajax异步交互模式中,在客户端浏览器和服务器当中,多了一个传递对象Ajax引擎,当客户端浏览器是向Ajax引擎提交请求,然后由Ajax引擎负责和服务器进行请求信息转交,这样就能实现在客户端浏览器发送请求后,能够继续操作,而不是处于等待状态。当服务器处理完Ajax引擎请求后,将响应传递给Ajax引擎,Ajax引擎会更新客户端浏览器页面。

3. Ajax开发步骤
第一步:获取XMLHttpRequest对象。
 在w3school的xml文档中就能查到示例代码。

var xmlhttp = null;
if(window.XMLHttpRequest){
	//这个是针对浏览器IE7及其7以上的版。
	xmlhttp = new XMLHttpRequest();
}
else if(window.ActiveXObject){
	//这个是针对浏览器5到7的版本。
	xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

第二步:注册回调函数。
 xmlhttp.onreadystatechange = function(){
};
onreadystatechange是一个事件处理器,用于每个状态变化所触发的事件。

第三步:open(“method”,“URL”,async,“uname”,“pswd”)
 只用于设置请求方式、URL路径、以及是否同步,并不发送请求。

参数作用
method发送请求的方式,可选的参数有:GET、POST和PUT。
URL要发送的URL路径,可以使用绝对路径和相对路径。
async请求是否要被异步处理。也可以不写,默认为true。
 true,脚本处理会在send()发送之后继续处理,即异步处理。
 false,在继续脚本处理之前,脚本会等待某个响应,即同步处理。
uname目前还没用过,文档也没有说明。直接不写就行。
pswd目前还没用过,文档也没有说明。直接不写就行。

 
如果URL要求带参数呢?
 如果是get请求的话,将参数直接在url后面进行拼接。
例如:xmlhttp.open(“get”,“http://www.baidu.com?name=xiaosan”);

 如果是post请求的话,则要进行多项设置操作:
例如:xmlhttp.open(“post”,“http://www.baidu.com”);

 xmlhttp.setRequestHeader("content-type","application/x-www-form-urlencoded");

其中,setRequestHeader(“label”,“value”)的作用是想要被发送的http报头添加lable/value对。

第四步:send(content)
 发送请求。如果没有参数,则写成send(null)。
如果是POST请求的话,则应该这么写xmlhttp.send("name=xiaosan");

第五步:在回调函数中进行具体的数据操作。
在这之前要先了解XMLHttpRequest的一些属性。

属性描述
onreadystatechange状态发生改变的时候,能触发一些事情。
readyState详情见下表
status数字返回状态,比如"OK"为200,"Not Found"为404等
statusText字符串返回状态,比如"OK","Not Found"等
responseText以字符串返回响应。
responseXML以XML返回响应。返回的是一个XML对象,可以用DOM进行解析

 

下表是一个readyState的状态值以及状态值所代表的含义:

状态值代表的状态释义
0未初始化的状态,代表XMLHttpRequest对象被创建之前
1加载中的状态,open操作。
2已加载的状态,send操作。
3交互的状态,接收到了响应数据,但只有响应头,正文还没别接收。
4完成的状态,所有的http响应接收完成。

 

4.样例理解

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
  <title>空白的网页</title>
  <script>
    window.onload = function(){
        var url = "http://localhost:10040/sms/test";
		
		var timestamp = "1566784833706";
		var sign = "674cd603ae4a9f71f5c8c8b1ff4ce2ade316318a";
		var appid = "XXXXXXXX";
		
        var request = new XMLHttpRequest();
		request.onreadystatechange = function(){
			if(request.status == 200){
				displayContent(request.responseText);
			}
		};
		request.open("POST", url);
		request.setRequestHeader("appid", appid);
		request.setRequestHeader("sign", sign);
		request.setRequestHeader("timestamp", timestamp);
		request.send(null);
    }
	
	function displayContent(content){
		var p = document.getElementById("content");
		p.innerHTML = content;
	}
  </script>
</head>
<body>
	<div id = "content">
		
	</div>
   
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值