Ajax的使用

Ajax

  • AJAX = Asynchronous JavaScript and XML (异步的JavaScript和XML)。

  • AJAX是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

  • Ajax不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术。

  • 在2005年,Google通过其Google Suggest使AJAX变得流行起来。Google Suggest能够自动帮你完成搜索单词。

  • Google Suggest使用AJAX创造出动态性极强的web界面:当您在谷歌的搜索框输入关键字

    时,JavaScript 会把这些字符发送到服务器,然后服务器会返回一个搜索建议的列表。

    就和国内百度的搜索框一样
    在这里插入图片描述

1、iframe的方式进行异步加载

iframe 语法

 <iframe id="win" src="超链接" style="width: 600px;height: 600px;"></iframe>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>iframe</title>
    <script>
        function go() {
            //拿到 输入的 内容
            var value = document.getElementById("url").value
            //赋给 iframe的 src
            document.getElementById("win").src = value
        }
    </script>
</head>
<body>
<div>
    <p>请输入地址:</p>
    <p>
        <input type="text" id="url">
        <input type="button" value="提交" onclick="go()">
    </p>
</div>
<div>
    <iframe id="win" style="width: 600px;height: 600px;"></iframe>
</div>
</body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、失去焦点发送Ajax请求

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Controller

@RestController
public class AjaxController {
    @PostMapping("/b1")
    public void blur(String name, HttpServletResponse response) throws IOException {
        System.out.println("参数是:"+name);
        if (name.equals("lmh")){
            //返回给data
            response.getWriter().println("参数是lmh");
        }else {
            response.getWriter().println("参数不是lmh");
        }
    }
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
  <!--DispatcherServlet-->
  <servlet>
    <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <!--一定要注意:我们这里加载的是总的配置文件,之前被这里坑了!-->
      <param-value>classpath:springmvc-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <!--encodingFilter-->
  <!--配置编码过滤器-->
  <filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
      <param-name>forceResponseEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

JSP

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>$Title$</title>
    <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
        function b() {
            $.post({
                url: "${pageContext.request.contextPath}/b1",
                //键值对形式
                data: {'name': $("#username").val()},
                success: function (data,status) {
                    alert(data);
                    alert(status);
                }
            })
        }
    </script>
</head>
<body>

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

在这里插入图片描述

3、Ajax异步加载数据

在这里插入图片描述
controller

@RestController
public class UserController {
    @RequestMapping("/a2")
    public List<User> a2() {
        List<User> list = new ArrayList<>();
        list.add(new User("lmh", 18, "男"));
        list.add(new User("lmh2", 11, "女"));
        list.add(new User("lmh3", 12, "男"));
        return list;
    }
}

pojo

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private String name;
    private int age;
    private String sex;
}

jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $("#btn").click(function () {
                $.ajax({
                    url: "${pageContext.request.contextPath}/a2",
                    success(data) {
                        var html1 = ""
                        for (let i = 0; i < data.length; i++) {
                            html1 += "<tr>"
                                + "<td>" + data[i].name + "</td>"
                                + "<td>" + data[i].age + "</td>"
                                + "<td>" + data[i].sex + "</td>"
                                + "</tr>"
                        }
                        $("#tb").html(html1)
                    }
                })
            })
        })
    </script>
</head>
<body>
<input type="button" value="加载数据" id="btn">
<table>
    <tr>
        <td>姓名</td>
        <td>年龄</td>
        <td>性别</td>
    </tr>
    <tbody id="tb">
    </tbody>
</table>
</body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、Ajax验证用户名

比如注册功能中,输入一个用户名,我们不需要提交,失去焦点 就会无刷新显示 该用户名已被注册。

controller

@RestController
public class UserController {

    @RequestMapping("/login")
    public String login(String name, String passwd) {
        String msg = "";
        //!name.equals("")  防止 什么都不输入的时候 判错
        if (name != null && !name.equals("")) {
            if (name.equals("lmh")) {
                msg = "用户名正确!";
            } else {
                msg = "用户名错误!";
            }
        }

        if (passwd != null && !passwd.equals("")) {
            if (passwd.equals("123123")) {
                msg = "密码正确!";
            } else {
                msg = "密码错误!";
            }
        }
        //由于@RestController注解,自动转成json格式返回
        return msg;
    }
}

jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="${pageContext.request.contextPath}/js/jquery-3.3.1.min.js"></script>
    <script>
        $(function () {
            //判断用户名
            $("#name").blur(function () {
                $.ajax({
                    url: "${pageContext.request.contextPath}/login",
                    data: {"name": $("#name").val()},
                    success(data) {
                        $("#userInfo").html(data)
                        if (data.toString() === "用户名正确!") {
                            $("#userInfo").css("color", "green")
                        } else {
                            $("#userInfo").css("color", "red")
                        }
                    }
                })
            })
            //判断密码
            $("#passwd").blur(function () {
                $.ajax({
                    url: "${pageContext.request.contextPath}/login",
                    data: {"passwd": $("#passwd").val()},
                    success(data) {
                        $("#passwdInfo").html(data)
                        if (data.toString() === "密码正确!") {
                            $("#passwdInfo").css("color", "green")
                        } else {
                            $("#passwdInfo").css("color", "red")
                        }
                    }
                })
            })
        })
    </script>
</head>
<body>
<p>用户名:<input type="text" id="name"><span id="userInfo"></span>
</p>
<p>密码:<input type="password" id="passwd"><span id="passwdInfo"></span>
</p>
</body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值