JQuery发送Ajax请求的5种简单使用方式,一看就会~

JQuery发送Ajax请求的5种简单使用方式,一看就会~

1、Ajax简介

1.1 什么是Ajax

Ajax即Asynchronous Javascript And XML(异步JavaScript和XML),在 2005年被Jesse James Garrett提出的新术语,用来描述一种使用现有技术集合的新方法,包括: HTML 或 XHTML, CSS, JavaScript, DOM, XML, XSLT, 以及最重要的XMLHttpRequest。使用Ajax技术网页应用能够快速地将增量更新呈现在用户界面上,而不需要重载(刷新)整个页面,这使得程序能够更快地回应用户的操作。

异步刷新:

如网页中某一个地方需要修改,只刷新需要修改的地方,其他地方不变。(比如网页点赞,只刷新赞的数量)

1.2 Ajax优缺点

优点:

  • 使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变的信息。
  • Ajax不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。就像DHTML应用程序那样,Ajax应用程序必须在众多不同的浏览器和平台上经过严格的测试。

缺点:

  • 可能破坏浏览器的后退与加入收藏书签功能。在动态更新页面的情况下,用户无法回到前一个页面状态,这是因为浏览器仅能记下历史记录中的静态页面。一个被完整读入的页面与一个已经被动态修改过的页面之间的可能差别非常微妙;用户通常都希望单击后退按钮,就能够取消他们的前一次操作,但是在Ajax应用程序中,却无法这样做。

2、如何使用Ajax

  • JavaScript中使用Ajax,代码复杂,不推荐
  • JQuery中使用Ajax,代码简单,推荐

2.1 用JavaScript方式使用Ajax

可以参考其他博主文章,这里不再赘述

2.2 使用jQuery使用Ajax

说明:

  • JQuery发送ajax请求共有四种方式:通用的方式getpostload
  • 请求成功的函数返回值参数名可以自定义,异常的函数参数名是固定的

语法说明:

// 值均写在引号内,单引号和双引号都可以
$.ajax({
    url: '', 	// 请求的地址,即要给那里发送请求
    data: {		// 请求参数,有多个时以逗号分割
        name: 'zhangsan',
        pwd: '123'
    },
    type: 'get',		// 请求方式,get、post
    dataType: 'text',	// 返回值类型, json、text等
    success: function (res) { // 请求成功执行此方法,res为返回值,名称自定义
        $('#get1').html(res)
    },
    error: function (xhr, errorMessage, e) { //请求异常执行此方法,参数名不建议修改,可以不写这个函数
        alert(errorMessage);
    }
})

2.3 简单实例

页面代码:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Ajax请求示例</title>
</head>
<body style="text-align: center">
<style>
    td {
        width: 300px;
        border: 1px black solid;
    }
</style>
<script src="js/jquery-1.9.1.min.js"></script>
<script>
    function getOne() {
        $.ajax({
            url: 'getOne',
            data: {
                name: 'zhangsan',
                pwd: '123'
            },
            type: 'get',
            dataType: 'text',
            success: function (res) {
                $('#get1').html(res)
            },
            error: function (xhr, errorMessage, e) {
                alert(errorMessage);
            }
        })
    }

    function getTwo() {
        $.get('getTwo', 'name=zs&pwd=333',
            function (res) {
                $('#get2').html(res)
            }, 'text'); // 'text'为返回值类型
    }

    function postOne() {
        $.ajax({
            url: 'postOne',
            data: {
                name: 'zhangsan',
                pwd: '123'
            },
            type: 'post',
            dataType: 'text',
            success: function (res) {
                $('#post1').html(res)
            },
            error: function (xhr, errorMessage, e) {
                alert(e)
            }
        })
    }

    function postTwo() {
        $.post('postTwo', 'name=zhangsan',
            function (res) {
                $('#post2').html(res)
            }, 'text');
    }

    function load() {
        $('#load').load('loadRequest', 'name=lisi', function (res) { // url, data, callback
            											// 即请求地址,请求参数,请求后执行的函数
            $('#load').html(res)
        });
    }
</script>
<table cellpadding="20px" border="3px solid black" th:cellspacing="0" style="margin: 110px auto">
    <tr>
        <td>
            <button onclick="getOne()">第一种get请求</button>
        </td>
        <td id="get1"></td>
        <td>
            <button onclick="getTwo()">第二种get请求</button>
        </td>
        <td id="get2"></td>
    </tr>
    <tr>
        <td>
            <button onclick="postOne()">第一种post请求</button>
        </td>
        <td id="post1"></td>
        <td>
            <button onclick="postTwo()">第二种post请求</button>
        </td>
        <td id="post2"></td>
    </tr>
    <tr>
        <td ><button onclick="load()">load 请求</button></td>
        <td id="load"></td>
        <td></td>
        <td></td>
    </tr>
</table>
</body>
</html>

controller代码:

使用Springboot

package priv.happy.ajax_study.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import priv.happy.ajax_study.entity.User;

/**
 * @Author: HAPPY
 * @Project_name: Ajax
 * @Package_name: priv.happy.ajax_study.controller
 * @Date: 2021/10/19 20:11
 * explain: jquery结合Ajax的5种简单使用方式
 */
@Controller
public class AjaxController {
    @GetMapping("/")
    public String index() {
        return "index";
    }

    @GetMapping("/getOne")
    @ResponseBody
    public String getRequestOne(@RequestParam("name") String name, @RequestParam("pwd") String pwd) {
        System.out.println("name: " + name);
        System.out.println("pwd: " + pwd);
        return "Ajax返回第一种get请求";
    }

    @GetMapping("/getTwo")
    @ResponseBody
    public String getRequestTwo(@RequestParam("name") String name, @RequestParam("pwd") String pwd) {
        System.out.println("name: " + name);
        System.out.println("pwd: " + pwd);
        return "Ajax返回第二种get请求";
    }

    @PostMapping("/postOne")
    @ResponseBody
    public String postRequestOne(User user) {
        System.out.println(user);
        return "Ajax返回第一种post请求";
    }

    @PostMapping("/postTwo")
    @ResponseBody
    public String postRequestTwo(User user) {
        System.out.println(user);
        return "Ajax返回第二种post请求";
    }

    @GetMapping("/loadRequest")
    @ResponseBody
    public String loadRequest(@RequestParam("name") String name) {
        System.out.println("name" + name);
        return "响应load的ajax请求";
    }
}

使用Servlet

// 和spring boot controller 处理区别只有返回方式,所以这里只写一下servlet的返回方式

@WebServlet(name = "getOne", urlPatterns = "/getOne")
public class GetOne extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      	// 处理业务逻辑
        
        // 响应请求,使用流的方式肯能会有IO异常,所以捕捉异常
        PrintWriter out = response.getWriter();
        try {
            out.write("第一种get");
            out.close
        } catch (Exception exception) {
            out.write(exception);
        }
        out.close();
    }
}

程序执行结果:

发请求前:
在这里插入图片描述

逐个点击按钮发请求后:

在这里插入图片描述
问题:异步刷新体现在哪?
看动图~
在这里插入图片描述
我们可以看到,当我点击了一个按钮时,只有对应地方的值被修改了,而且页面并没有进行全部刷新,只是将对应部分进行了局部刷新。

附加:
利用Ajax结合JavaScript事件监听器,例如按键监听等,就可以实现在输入框输入文本时,动态的从数据库中查出值进行提示!

  • 14
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别来BUG求求了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值