1. Ajax 请求简介
ajax (Asynchronous JavaScript and XML ):是指一种创建交互式网页应用的网页开发技术,通过在后台与服务器进行少量数据交换,ajax 可以使网页实现异步更新。这就意味着可以在 不重新加载整个网页的情况下,对网页的局部进行更新
2. 原生 JS 中的 Ajax 请求流程
2.1. 创建异步对象
var xhr = new XMLHttpRequest();
2.2. 调用open() 方法设置请求行
设置请求行 open ,也就是设置请求方式及请求 URL
xhr.open('GET', "xxxxxx?username="+name);
xhr.open('POST', URL);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
2.2.1. open() 方法参数
语法:open(method, url, async) ,方法有 3 个参数
method 请求类型:对应的取值是 GET 和 POST url :文件在服务器上的位置即接口路径async :默认值 true 异步,false 为同步
async 为 true 时,服务器的请求是异步的,也就是脚本执行 send() 方法后不等待服务器的执行结果,继续执行脚本代码async 为 false 时,服务器的请求是同步的, 也就是脚本执行 send() 方法后等待服务器的执行结果,若在等待过程中超时,则不再等待,继续执行后面的脚本代码
2.3. 调用 send() 方法发送数据
xhr.send(null);
xhr.send('a=100&b=200&c=300');
send(string) :请求发送到服务器,仅用于 POST 请求
2.4. 设置回调函数
xhr.onreadystatechange = callback;
2.5. 完整的请求案例
2.5.1. ajax-get 方式请求案例
var xhr = new XMLHttpRequest();
xhr.open("get","xxxxxx?username="+name);
xhr.send(null);
xhr.onreadystatechange = function() {
if(xhr.status == 200 && xhr.readyState == 4){
console.log(xhr.responseText);
document.querySelector(".showmsg").innerHTML = xhr.responseText;;
}
}
2.5.2. ajax-post 方式请求案例
var xhr = new XMLHttpRequest();
xhr.open("post","xxxxxx");
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send("username="+name);
xhr.onreadystatechange = function() {
if(xhr.status == 200 && xhr.readyState == 4){
document.querySelector(".showmsg").innerHTML = xhr.responseText;
}
}
2.5.3. Ajax 中的 readyState 属性
0 :未初始化,尚未调用 open() 方法1 :启动,已经调用 open() 方法,但尚未调用 send() 方法2 :发送,已经调用 send() 方法,但尚未接收到响应3 :接收,已经接收到部分响应数据4 :完成,已经接收到全部响应数据,而且已经可以在客户端使用了
2.5.4. Ajax 中的状态码 status 属性
200-300 :表示响应成功400 :请求参数错误401 :无权限访问404 :访问的资源不存在
3. jQuery 中的 Ajax 请求
3.1. $.get() 请求
$.get() 是以 GET 方式实现 Ajax 请求的,在提交短数据(数据量不能太多,最大 4KB )时可用
$.get(
url,
data,
success(
response,
status,
xhr
),
dataType
)
3.1.1. 常用示例
$.get("XXX/XXXXXX");
$.get("XXX/XXXXXX", {name: "John",age: "20"});
$.get("XXX/XXXXXX", {name: "John",age: "20"},function(data){
alert("返回的数据是:"+data);
});
$.get("XXX/XXXXXX", {name: "John",age: "20"},function(data){
alert("返回的数据是:"+data);
},"json"));
3.2. $.post() 请求
$.post() 是以 POST 方式实现 Ajax 异步请求的
$.post(
url,
data,
success(
response,
status,
xhr
),
dataType
)
3.2.1. 常用示例
$.post("XXX/XXXXXX");
$.post("XXX/XXXXXX", {name: "John",age: "20"});
$.post("XXX/XXXXXX", {name: "John",age: "20"},function(data){
alert("返回的数据是:"+data);
});
$.post("XXX/XXXXXX", {name: "John",age: "20"},function(data){
alert("返回的数据是:"+data);
},"json"));
3.3. $.ajax() 请求
$.ajax() 方法用于执行 Ajax 的请求。所有的 jQuery AJAX 方法都使用 ajax() 方法。该方法通常用于其他方法不能完成的请求
$.ajax({
url : 'XXXXXX/XXXXXXXX',
type:"POST",
async:true,
data : {
id : $("#id").val(),
name: $("#name").val()
},
dataType : 'json',
success : function(map) {
alert("执行成功后的回调函数");
}
});
|