专栏首页Ray学习笔记Ajax与Controller数据交互-实例

Ajax与Controller数据交互-实例

直接进入正题

Java

AjaxResult

package com.ray.ray.common.base;

import java.util.HashMap;

/**
 * @author Ray
 * @date 2018/11/12 0012
 * 操作消息提醒
 */
public class AjaxResult extends HashMap<String, Object> {

    /**
     * 初始化一个新的 Message 对象
     */
    public AjaxResult() {}

    /**
     * 返回错误消息
     * @return 错误消息
     */
    public static AjaxResult error() {
        return error(500, "操作失败");
    }

    /**
     * 返回错误消息
     * @param msg 内容
     * @return 错误消息
     */
    public static AjaxResult error(String msg) {
        return error(500, msg);
    }

    /**
     * 返回错误消息
     * @param code 错误码
     * @param msg 内容
     * @return 错误消息
     */
    public static AjaxResult error(int code, String msg) {
        AjaxResult ajaxResult = new AjaxResult();
        ajaxResult.put("code", code);
        ajaxResult.put("msg", msg);
        return ajaxResult;
    }

    /**
     * 返回成功消息
     * @param msg 内容
     * @return 成功消息
     */
    public static AjaxResult success(String msg) {
        AjaxResult ajaxResult = new AjaxResult();
        ajaxResult.put("msg", msg);
        ajaxResult.put("code", 0);
        return ajaxResult;
    }

    /**
     * 返回成功消息
     * @return 成功消息
     */
    public static AjaxResult success() {
        return AjaxResult.success("操作成功");
    }

    /**
     * 返回成功消息
     * @param key 键值
     * @param value 内容
     * @return 成功消息
     */
    @Override
    public AjaxResult put(String key, Object value) {
        super.put(key, value);
        return this;
    }
}

BaseController

package com.ray.ray.common.base;

/**
 * @author Ray
 * @date 2018/11/12 0012
 * web层通用数据处理
 */
public class BaseController {

    /**
     * 响应返回结果
     * 参数result 类型可自行更换
     * 如:
     * boolean result -> return result == true ? success() : error();
     * int result -> return result > 0 ? success() : error();
     */
    protected AjaxResult toAjax(boolean result) {
        return result == true ? success() : error();
    }

    /**
     * 返回成功
     */
    public AjaxResult success() {
        return AjaxResult.success();
    }

    /**
     * 返回失败
     */
    public AjaxResult error() {
        return AjaxResult.error();
    }

    /**
     * 返回成功消息
     */
    public AjaxResult success(String message)
    {
        return AjaxResult.success(message);
    }

    /**
     * 返回失败消息
     */
    public AjaxResult error(String message)
    {
        return AjaxResult.error(message);
    }

    /**
     * 返回错误码消息
     */
    public AjaxResult error(int code, String message)
    {
        return AjaxResult.error(code, message);
    }
}

UserController

    /**
     * 新增
     * @param sysUser 实体类
     * @return 视图
     */
    @ApiOperation(value = "新增用户", notes = "返回用户列表视图")
    @ApiImplicitParam(name = "sysUser", value = "使用@ModelAttribute注解接收前端数据,使用@Validated注解验证后台数据,内容是sysUser实体", dataType = "SysUser")
    @PostMapping("/user/toAdd")
    @ResponseBody
    public AjaxResult toAdd(@Validated @ModelAttribute SysUser sysUser) {
			// 操作一: return error 或 success,直接返回msg
//        if (StringUtils.isNotNull(user.getUserId()) && SysUser.isAdmin(user.getUserId()))
//        {
//            return error("不允许修改超级管理员用户");
//        }

			// 操作二: return toAjax ,需判断
        return toAjax(sysUserService.save(sysUser));
    }

HTML

add.html

<script th:src="@{/js/jquery-1.11.1.js}"></script>
<script th:src="@{/js/jquery-validation/jquery.validator.js}"></script>

<script>
    $("#fm").validator({
        valid: function (form) {
            var me = this;
            // 提交表单之前,hold住表单,防止重复提交
            me.holdSubmit();
            $.ajax({
                url: "/system/user/toAdd",
                data: $(form).serialize(),
                type: "POST",
                dataType: 'json',
                success: function (result) {
                    if (result.code == web_status.SUCCESS) {
                        var index = parent.layer.getFrameIndex(window.name);
                        parent.layer.msg(result.msg, {
                            icon: 1,
                            time: 2000
                        }, function () {
                            window.parent.location.reload();
                            parent.layer.clone(index);
                        });
                    } else {
                        parent.layer.msg(result.msg,{
                            icon: 2,
                            time: 2000 //2秒关闭(如果不配置,默认是3秒)
                        });
                        me.holdSubmit(false);
                    }
                }
            });
        }
    });

		/** 消息状态码 */
    web_status = {
        SUCCESS: 0,
        FAIL: 500
    };
</script>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 文件上传配合后端

    Remember_Ray
  • Java多线程编程核心技术

    一个进程正在运行时至少会有一个线程在运行,这种情况在Java中也是存在的。这些线程在后台默默地执行,比如调用public static void main()方...

    Remember_Ray
  • Effective Java(一)

    对于类而言,为了让客户端获取它自身的一个实例,最传统的方法就是提供一个公有的构造器。还有一种方法,也应该在每个程序员的工具箱中占有一席之地。类可以提供一个公有的...

    Remember_Ray
  • java中的万能实体类

    低调小熊猫
  • SpringBoot中连接MYSQL数据库,并使用JPA进行数据库的相关操作

    今天给大家介绍一下如何SpringBoot中连接Mysql数据库,并使用JPA进行数据库的相关操作。 步骤一:在pom.xml文件中添加MYSQl和JPA的相关...

    林老师带你学编程
  • 聊聊flink的RestartStrategies

    flink-core-1.7.1-sources.jar!/org/apache/flink/api/common/restartstrategy/Restar...

    codecraft
  • Array - 55. Jump Game

    Given an array of non-negative integers, you are initially positioned at the fir...

    用户5705150
  • 阿里面试:Mybatis中方法和SQL是怎么关联起来的呢?

    已经分享了三篇Mybatis源码分析文章,从 Mybatis的配置文件解析 到 获取SqlSession,再到 获取UserMapper接口的代理对象。

    田维常
  • 利用NVIDIA AGX Xavier为骨科医生构建深度学习工具

    Lady在想,人工智能技术应用在医疗上,会不会有助于改善医患关系呢?也欢迎你留言谈谈你的想法吧!

    GPUS Lady
  • 数据结构之栈和队列

     栈或者队列是经典的数据结构,虽然平时都在用,但是都是别人封装好的集合,我们不用手写了,但是这些内功,作为开发人员来说是必须要掌握的。

    Kevin_Zhang

扫码关注云+社区

领取腾讯云代金券