jquery实现Ajax请求
Ajax用于无需刷新整个页面而进行浏览器与服务器的通信,服务器将不再返回整个页面,而是返回部分数据,通过JavaScript的DOM操作对节点进行更新。数据传输格式有xml、json等格式,但常用的是json格式。
我们可以使用JavaScript的对象XMLHttpRequest来实现原生Ajax,但这种方法比较复杂,不易编写。jQuery已经封装了Ajax,使得发起Ajax请求比较容易,本文简单介绍jQuery实现Ajax的过程:
1、在<head>
标记中引入jquery.js文件
<script src="https://code.jquery.com/jquery-3.6.1.js"></script>
2、几种常见jQuery的Ajax方法
(1)$.ajax()
①url:链接地址,字符串表示
②data:(可选) 要发送给服务器的数据,GET与POST都可以,将自动转换为请求字符串格式,以 Key/value 的键值对形式表示,会做为QueryString附加到请求URL中,格式为{A: ‘…’, B: ‘…’}
③type:“POST” 或 “GET”,请求类型
④timeout:请求超时时间,单位为毫秒,数值表示
⑤cache:是否缓存请求结果,bool表示
⑥contentType:内容类型,默认为"application/x-www-form-urlencoded"
⑦dataType:服务器响应的数据类型,字符串表示;当填写为json时,回调函数中无需再对数据反序列化为json
⑧success:请求成功后,服务器回调的函数
⑨error:请求失败后,服务器回调的函数
⑩complete:请求完成后调用的函数,无论请求是成功还是失败,都会调用该函数;如果设置了success与error函数,则该函数在它们之后被调用
⑪async:是否异步处理,bool表示,默认为true;设置该值为false后,JS不会向下执行,而是原地等待服务器返回数据,并完成相应的回调函数后,再向下执行
⑫username:访问认证请求中携带的用户名,字符串表示
⑬password:返回认证请求中携带的密码,字符串表示
<script type="text/javascript">
function login1(){
$.ajax({
//${pageContext.request.contextPath}用于取后端方法的绝对路径的项目名
url: "${pageContext.request.contextPath}/user/returnJson",
type: "GET",
data:'{name: 'James'}', //必须是字符串格式
contentType:"application/json", //指定内容格式
dataType:json,
success: function(data) { //括号里的data是服务器返回的数据
console.log(data);
document.getElementById("myDiv").innerText=data["name"];
}
});
}
</script>
<script>
$('#btn1').click(function () {
$.ajax({
type:"post", //提交方式
url:'${pageContext.request.contextPath}/JSONServlet',
data:{
bookname: $("#bookname").val()//val() 方法返回或设置被选元素的值。
},
dataType: "json", //返回数据的格式
success:function (responseData) {
var html = "";
$('#dataTable tr:not(:first)').remove(); //删除第一行之外的所有行
// $('#dataTable > tbody > tr').remove(); // 删除所有行,表头会被删除
console.log(responseData);
for (var i = 0; i < responseData.length; i++) {
html += '<tr>';
html += '<td>'+responseData[i].bookid+'</td>'+'<td>'+responseData[i].bookname+'</td>'+'<td>'+responseData[i].price+'</td>'
html += '</tr>';
}
$('#dataTable').append(html);
},
});
});
</script>
(2)$.post()
使用POST方式执行Ajax请求,从服务器加载数据。
形式:$.post(url, data, func, dataType);
可选参数:
①url:链接地址,字符串表示
②data:需要发送到服务器的数据,格式为{A: ‘…’, B: ‘…’}
③func:请求成功后,服务器回调的函数;function(data, status, xhr),其中data为服务器回传的数据,status为响应状态,xhr为XMLHttpRequest对象,个人感觉关注data参数即可
④dataType:服务器返回数据的格式
<script type="text/javascript">
function login2(){
$.post(
"${pageContext.request.contextPath}/user/returnJson",
'{name: 'James'}',
"application/json",
function(data) {
console.log(data);
document.getElementById("myDiv").innerText=data["name"];
}
);
}
</script>
(3)$.get()
使用GET方式执行Ajax请求,从服务器加载数据。
形式:$.get(url, data, func, dataType);
<script type="text/javascript">
function login3(){
$.get(
"${pageContext.request.contextPath}/user/returnJson",
function(data) {
console.log(data);
document.getElementById("myDiv").innerText=data["name"];
}
);
}
</script>
(4)$.getJSON()
形式:$.getJSON(url, data, func);
使用GET方式执行Ajax请求,从服务器加载JSON格式数据。
<script type="text/javascript">
function login4(){
$.getJSON(
"${pageContext.request.contextPath}/user/returnJson",
function(data) {
console.log(data);
document.getElementById("myDiv").innerText=data["name"];
}
);
}
</script>
注意:因为确定服务器返回的数据格式为json,因此该方法不必再指定dataType。
(5)$.load()
将服务器加载的数据直接插入到指定DOM中的某个节点中。
形式:$.load(url, data, func);
其中data如果存在则使用POST方式发送请求,不存在则使用GET方式发送请求。
<div id="myRes"></div>
function login5() {
$('#myRes').load(
"${pageContext.request.contextPath}/user/returnJson",
'{name: 'James'}',
"application/json"
);
}