这是我参与8月更文挑战的第8天,活动详情查看:8月更文挑战
什么是Ajax和JSON,它们的优点
- Ajax是全称是asynchronous JavaScript andXML,即异步JavaScript和xml,用于在Web页面中实现异步数据交互,实现页面局部刷新
- 优点:可以实现异步通信效果,页面局部刷新,带来更好的用户体验
- JSON是一种轻量级的数据交换格式,看着像对象,本质是字符串
- 优点:轻量级、易于人的阅读和编写,便于js解析,支持复合数据类型
Ajax的交互流程有哪几步?
- 创建ajax对象
- 规定请求地址
- 等待服务器相应
- 向服务器发送请求
xhr = new XMLHttpRequest
xhr.open(method,url,async)
xhr.onload
xhr.send()
下面是一个验证用户名的ajax例子
username.onblur = function(){
var usernameValue = username.value;
//将usernameValue提交给服务器,有服务器进行唯一性的校验
//1、创建对象 兼容处理
var xhr = null;
if(window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
//2、准备发送
xhr.open("get","./server/checkUsername.php?uname=" + usernameValue,true);
//3、执行发送
xhr.send(null);
//制定回调函数
xhr.onreadystatechange = function(){
if(xhr.readyState == 4) {
if(xhr.status == 200) {
var result = xhr.responseText;
var username_result = document.querySelector("#username_result");
if(result == "ok") {
username_result.innerText = "用户名可以使用";
} else {
username_result.innerText = "用户名已经被注册";
}
}
}
};
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同?
IE中通过new ActiveXObject()得到,Firefox中通过newXMLHttpRequest()得到. 使用jquery封装好的ajax,会避免这些问题简述ajax的优缺点
优点:XMLHttpRequest常用方法和属性
open(get/post,url,是否异步)创建http请求
send()发送请求给服务器
setRequestHeader()设置头信息(使用post才会用到,get并不需要调用该方法)
常用的属性:
onreadystatechange 用于监听ajax的工作状态(readyState变化时会调用此方法)
readyState 用来存放XMLHttpRequest的状态
status 服务器返回的状态码
responseText 服务器返回的文本内容
readyState的几个状态
0:请求未初始化(此时还没有调用open)1:服务器连接已建立,已经发送请求开始监听
2:请求已接收,已经收到服务器返回的内容
3:请求处理中,解析服务器响应内容
4:请求已完成,且响应就绪
jquery ajax的实现
$.ajax({
url:发送请求的地址,
data:数据的拼接,//发送到服务器的数据
type:'get',//请求方式,默认get请求
dataType:'json',//服务器返回的数据类型
async:true,//是否异步,默认true
cache:false,//设置为 false 将不会从浏览器缓存中加载请求信息
success:function(){},//请求成功后的回调函数
error: function(){}//请求失败时调用此函数
})