ajax异步传值及后端接收参数的多种方式小结

 更新时间:2023年11月20日 14:41:48   作者:小王努力吖  
这篇文章主要介绍了ajax异步传值及后端接收参数的多种方式小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

异步传值

第一种呢,也是最简单的一种,通过get提交方式,将参数在链接中以问号的形式进行传递

// 前台传值方法    
// 触发该方法调用ajax
    function testAjax(yourData) {
        $.ajax({
            type: "get", // 以get方式发起请求
            url: "/yourUrl?yourDataName=" + yourData, // 将你的请求参数以问号拼接到url中进行参数传递
            success(data) {
                // data为返回值
                // 成功后的回调方法
            }
        })
    }
// 后台接值方法
    @RequestMapping("/yourUrl")
    @ResponseBody
// @RequestParam("yourData")是必不可少的,因为他指定了链接中的参数名称
    public String yourUrl(@RequestParam("yourData") String yourData) {
        System.out.println(yourData);
        // 返回值可以自由定义
        return "SUCCESS";
    }

 第二种呢,是将参数体现到链接中,在后台通过占位进行传递。

// 前台传值方法,其实大体与上方相同只需注意url即可
// 触发该方法调用ajax
    function testAjax(yourData) {
        $.ajax({
            type: "get", // 以get方式发起请求
            url: "/yourUrl/"+yourData, // 将你的请求参数拼接到url中进行参数传递
            success(data) {
                // data为返回值
                // 成功后的回调方法
            }
        })
    }
// 后台接值方法
    @RequestMapping("/yourUrl/{yourDataName}")
    @ResponseBody
 // 同样@PathVariable("yourDataName")必不可少,因为他指定链接中某个位置代表着名为yourDataName的变量
    public String yourUrl(@PathVariable("yourDataName") String yourData) {
        System.out.println(yourData);
        // 返回值可以自由定义
        return "SUCCESS";
    }

 第三种呢,通过post提交方式将form表单中的数据序列化后传递到后台

 // 前台传值方法
 function testAjax() {
        $.ajax({
            type: "post", // 以post方式发起请求
            url: "/yourUrl", // 你的请求链接
            data:$("#myForm").serialize(), // 对id为myForm的表单数据进行序列化并传递到后台
            success(data) {
                // data为返回值
                // 成功后的回调方法
            }
        })
    }
    // 后台接值方法
 @RequestMapping("/yourUrl")
    @ResponseBody
 // 在这里我假设大家表单数据与User实体类相对应
    public String yourUrl(User user) {
        System.out.println(user.toString());
        return "SUCCESS";
    }

第四种呢,就是Ajax异步传值最常见的在ajax方法体中使用data进行传值 

 // 前台传值方法
 function testAjax() {
        $.ajax({
            type: "post", // 以post方式发起请求
            url: "/yourUrl", // 你的请求链接
            data: { // 提交数据
                "username": "admin", // 前者为字段名,后者为数据
                "password": "admin"
            },
            success(data) {
                // data为返回值
                // 成功后的回调方法
            }
        })
    }
 // 后台接值方法
 @RequestMapping("/yourUrl")
    @ResponseBody
 // 在这里我假设大家表单数据与User实体类相对应
    public String yourUrl(@RequestParam("username") String username, @RequestParam("password") String password) {
        System.out.println("username="+username+";password="+password);
        return "SUCCESS";
    }

 后台往前台传值就要简单一些,单个数据或者封装数据可以直接使用return返回json数据给前台,如果是多个数据,可以使用PrintWriter进行传值,具体操作如下

PrintWriter out = response.getWriter();
try {
    out.write("yourWillReturnData");
} catch (Exception e) {
    e.printStackTrace();
}finally{
    out.close();
}
// 无论通过那种方式,只需在前台Ajax得success回调方法中对数据进行处理即可,我们以user为例
success(user){
    alert("返回的用户名为:"+user.username+"!!!密码为:"+user.password);
    // 在浏览器控制台打印结果,点击f12可以查看
    console.log("返回的用户名为:"+user.username+"!!!密码为:"+user.password);
}

非异步方式传值

1.与异步方式类似,使用form直接提交或者在链接中拼接参数即可

<!-- form表单提交 -->
<form id="myForm" class="layui-form" action="/yourUrl" method="post">
    <input type="text" name="username" required placeholder="邮箱"/>
    <input type="password" name="username" required placeholder="密码"/>
    <button type="submit" class="layui-btn">登录</button>
</form>
<!-- a标签拼接参数 -->
<a href="/yourUrl?youDataName=yourData" rel="external nofollow" >问号传递参数</a>
<a href="/yourUrl/yourData" rel="external nofollow" >拼接链接传递参数</a>

2.后台接受参数方式不变,与异步方式完全相同。 

    // 1.可以通过session进行参数传递
    @RequestMapping("/yourUrl")
    public String yourUrl(HttpServletRequest request) {
        // 通过request获取session,然后向session中放入参数key-value
        request.getSession().setAttribute("yourDataName", "yourData");
        // 跳转到你的视图
        return "/yourViews";
    }
    // 2.可以通过Model进行参数传递
    @RequestMapping("/yourUrl")
    public String yourUrl(Model model) {
        // 向model中加入参数key-value
        model.addAttribute("yourDataName", "yourData");
        // 跳转到你的视图
        return "/yourViews";
    }
    // 3.同样可以用request进行参数传递
    @RequestMapping("/yourUrl")
    public String yourUrl(HttpServletRequest request) {
        // 通过request放入参数key-value
        request.setAttribute("yourDataName", "yourData");
        // 跳转到你的视图
        return "/yourViews";
    }

EL表达式怎么用?为什么EL表达式不起作用,页面展示为${dataName}? 

<!-- 我们在这里以c标签的for循环为例做演示 -->
<!-- 首先导入c标签 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- 编写foreach循环-->
    <c:forEach items="${userList}" var="user">
        <input type="text" name="username" value="${user.username}"/>
        <input type="text" name="password" value="${user.password}"/>
    </c:forEach>

异步请求完成后如何进行跳转?

1.首先要明确,如果你的视图层全部放在WEB-INF中,那么你的视图层是无法直接进行跳转的,也就是说你不能由一个jsp跳转到另一个jsp,html同理。springboot项目也是一样,如果你是springboot项目,推荐使用thymeleaf模版引擎。

2.如果你希望在回调成功之后进行页面跳转,可以通过如下代码实现:

// 前台代码
success(user){
    alert("返回的用户名为:"+user.username+"!!!密码为:"+user.password);
    // 在浏览器控制台打印结果,点击f12可以查看
    console.log("返回的用户名为:"+user.username+"!!!密码为:"+user.password);
    // 成功回调后进行跳转
    window.location.href="/youWantToJumpUrl" rel="external nofollow" ;
}
    // 后台代码
    @RequestMapping("/youWantToJumpUrl")
    public String youWantToJumpUrl() {
        // 跳转到视图层
        return "/youWantToJumpView";
        // 重定向 return "redirect:/youWantToJumpUrl";
    }

 也就是说,如果想要跳转页面或者重定向到某一个方法,必须经过一次控制层才能实现。

二、

参考链接 ajax异步传值|前后台传值|EL表达式

到此这篇关于ajax异步传值及后端接收参数的多种方式小结的文章就介绍到这了,更多相关ajax异步传值接收参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Jquery中$.ajax()方法参数详解

    Jquery中$.ajax()方法参数详解

    本文是小编日常整理些有关jquery ajax()参数详解,由于jquery ajax方法参数比较多,靠大脑记住有点犯难,下面小编把内容整理分享到脚本之家网站,供大家参考
    2015-10-10
  • 纯AJAX分页,V0.2版 下载+演示

    纯AJAX分页,V0.2版 下载+演示

    纯AJAX分页,V0.2版 下载+演示...
    2007-01-01
  • 浅析JSONP解决Ajax跨域访问问题的思路详解

    浅析JSONP解决Ajax跨域访问问题的思路详解

    JSONP是一种使用JSON数据的方式,返回的不是JSON对象,是包含JSON对象的javaScript脚本。接下来通过本文给大家介绍jsonp解决ajax跨域访问问题的思路,非常不错具有参考借鉴价值,感兴趣的朋友一起看下吧
    2016-05-05
  • ajax实现页面的局部加载

    ajax实现页面的局部加载

    这篇文章主要为大家详细介绍了ajax实现页面的局部加载,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • asp.net+Ajax 文本文件静态分页实现代码

    asp.net+Ajax 文本文件静态分页实现代码

    代码还是很浅显易懂的,呵呵因为我也不会写高深的代码。重要的我们都要动手去实践。菜鸟们多多努力哦。做完我这个例子级会收获很多哦。
    2010-05-05
  • ajax请求Session失效问题

    ajax请求Session失效问题

    本文由脚本之家小编跟大家分享的ajax请求Session失效问题,感兴趣的朋友一起看看吧
    2015-09-09
  • Ajax实现带有验证码的局部刷新登录界面

    Ajax实现带有验证码的局部刷新登录界面

    很多登录界面都有验证码功能局部刷新效果,接下来通过本文给大家分享ajax实现带有验证码的局部刷新登录界面,感兴趣的朋友一起看看吧
    2016-09-09
  • ajax获取php页面的返回参数,控件赋值的方法

    ajax获取php页面的返回参数,控件赋值的方法

    下面小编就为大家带来一篇ajax获取php页面的返回参数,控件赋值的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • Ajax异步请求JSon数据(图文详解)

    Ajax异步请求JSon数据(图文详解)

    在编程过程中使用ajax调用数据的时候,难免要进行逻辑的处理,接受的数据也变的复杂比如数组类型的数据,这时候就需要使用JSON数据类型进行处理,通过本篇文章给大家介绍Ajax异步请求json数据,需要的朋友可以参考下本文
    2015-09-09
  • [js]一个获取页面ip的正则

    [js]一个获取页面ip的正则

    [js]一个获取页面ip的正则...
    2007-07-07

最新评论