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"
            );
            }