为了懒,我痛心学习Ajax(二)

3.jQuery.ajax


简介


  • Ajax的核心是XMLHttpRequest对象(XHR)。XHR为向服务器发送请求和解析服务器响应提供了接口。能够以异步方式从服务器获取新数据。


  • jQuery 提供多个与 AJAX 有关的方法。


  • jQuery是一个库;js的大量函数(方法)


  • 通过 jQuery AJAX 方法,能够使用 HTTP Get 和 HTTP Post 从远程服务器上请求文本、HTML、XML 或 JSON – 同时您能够把这些外部数据直接载入网页的被选元素中。


  • jQuery Ajax本质就是 XMLHttpRequest,对它进行了封装,方便调用!


jQuery.ajax(...)
      部分参数:
            url:请求地址
            type:请求方式,GET、POST(1.9.0之后用method)
        headers:请求头
            data:要发送的数据
    contentType:即将发送信息至服务器的内容编码类型(默认: "application/x-www-form-urlencoded; charset=UTF-8")
          async:是否异步
        timeout:设置请求超时时间(毫秒)
      beforeSend:发送请求前执行的函数(全局)
        complete:完成之后执行的回调函数(全局)
        success:成功之后执行的回调函数(全局)
          error:失败之后执行的回调函数(全局)
        accepts:通过请求头发送给服务器,告诉服务器当前客户端可接受的数据类型
        dataType:将服务器端返回的数据转换成指定类型
          "xml": 将服务器端返回的内容转换成xml格式
          "text": 将服务器端返回的内容转换成普通文本格式
          "html": 将服务器端返回的内容转换成普通文本格式,在插入DOM中时,如果包含JavaScript标签,则会尝试去执行。
        "script": 尝试将返回值当作JavaScript去执行,然后再将服务器端返回的内容转换成普通文本格式
          "json": 将服务器端返回的内容转换成相应的JavaScript对象
        "jsonp": JSONP 格式使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数


使用它的两种方式


https://jquery.com/ 在官网上下载它


为了懒,我痛心学习Ajax(二)


我们下载开发版(点进去右键保存就好)


下载好要用静态资源,就需要导入,创建包拉进去即可

为了懒,我痛心学习Ajax(二)


  • 使用cdn
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>

如果我们想失去焦点就产生一个异步交互


js加载记得要配上静态资源过滤,在applicationContext.xml

为了懒,我痛心学习Ajax(二)


3.1 编写AjaxController

@RequestMapping("/a1")
public void ajax1(String name , HttpServletResponse response) throws IOException {
    if ("wmm".equals(name)){
        response.getWriter().print("true");
    }else{
        response.getWriter().print("false");
    }
}


3.2 编写index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
    <%--不能自闭和--%>
    <script src="${pageContext.request.contextPath}/statics/js/jquery-3.6.0.js"></script>
    <script>
      /*$.==jQuery.*/
      function a1() {
        $.post({
          url:"${pageContext.request.contextPath}/a1",
          data:{'name':$("#username").val()},
          success:function (data,status) {
            alert(data);
            alert(status);
            console.log("data"+data);
          }
        })
      }
    </script>
  </head>
  <body>

  <%--失去焦点的时候,发起一个请求到后台--%>
  用户名:<input type="text" id="username" onblur="a1()">
  </body>
</html>

为了懒,我痛心学习Ajax(二)


3.3 启动测试


我们在网页中鼠标离开输入框的时候就会看到发出了ajax请求。这是后台返回的结果,可以右键检查去查看一下。


流程:

为了懒,我痛心学习Ajax(二)


3.5 用一个实体类来实现


3.5.1 实体类User


记得导入lombok的jar包


package com.hxl.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private String name;
    private int age;
    private String sex;
}
3.5.2 controller
@RequestMapping("/a2")
public List<User> a2(){
    ArrayList<User> list = new ArrayList<User>();
    list.add(new User("王木木",1,"男"));
    list.add(new User("hxl",2,"男"));
    return list;
}


3.5.3 test2.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="${pageContext.request.contextPath}/statics/js/jquery-3.6.0.js"></script>
    <script>
        $(function () {
            $("#btn").click(function () {
                $.post("${pageContext.request.contextPath}/a2",function (data) {
                    console.log(data)
                    let html="";
                    for (let i = 0; i < data.length; i++) {
                        html += "<tr>" +
                            "<td>" + data[i].name + "</td>" +
                            "<td>" + data[i].age + "</td>" +
                            "<td>" + data[i].sex+ "</td>" +
                            "</tr>"
                    }
                    $("#content").html(html);
                });
            })

        });
    </script>
</head>
<body>

<input type="button" value="更新数据" id="btn">
<table>
    <tr>
        <td>姓名</td>
        <td>年龄</td>
        <td>性别</td>
    </tr>
    <tbody id="content">

    </tbody>
</table>


</body>
</html>


这里一定要注意$("#btn")这个括号他们是一体的,让不然就会报不认识btn这个方法。


3.6 前端的一些知识


Html+css+js


js:


  • 函数:闭包()()


  • Dom


    • id,name,tag
    • create,remove


  • Bom


    • window
    • document


ES6

上一篇:将ASP.NET MVC 2.0 部署在IIS6和IIS7上的教程


下一篇:平台性能收集手段与研究思路