处理 Ajax 请求

处理 Ajax 请求

Spring MVC 的 Controller 处理 AJAX 请求很简单,只需要在方法的前面加上 @ResponseBody 即可。
Controller 的方法一般返回 String(可以是JSON, XML, 普通的 Text),也可以是对象。

返回 Json 字符串
  1. Controller 中添加方法
@GetMapping("/ajax")
@ResponseBody // 处理 AJAX 请求,返回响应的内容,而不是 View Name
public String ajaxString() {
    return "{\"username\": \"Josh\", \"password\": \"Passw0rd\"}";
}
  1. 访问 http://localhost:8080/ajax

输出: {username: "Josh", password: "Passw0rd"}

自动转换对象为 Json

在前面的 springmvc-servlet.xml 中已经配置好了使用 Fastjson 把对象自动映射为 Json:

  1. Gradle 依赖
    
compile 'com.alibaba:fastjson:1.2.41'

  1. 配置
  1. 创建类 Result.java

package com.xtuer.bean;
public class Result {
    private boolean success;
    private String message;
    private Object data;
    public Result(boolean success, String message) {
        this(success, message, null);
    }
    public Result(boolean success, String message, Object data) {
        this.success = success;
        this.message = message;
        this.data = data;
    }
    
    // Getters and Setters
}
Controller 里添加方法
@GetMapping("/ajax-object")
@ResponseBody
public Result ajaxObject() {
    return new Result(true, "你好");
}

访问 http://localhost:8080/ajax-object
输出: {"message":"你好","success":true}

参考资料
Spring MVC fastjson 与 Jackson 的 MessageConverter 配置

serializeJSON ajax数据转为json数据对象传入

cdn
<%--seralizeJson--%>
<script src="https://cdn.bootcss.com/jquery.serializeJSON/2.8.1/jquery.serializejson.js"></script>

javascript

image.png
        $.ajax({
                url:"newTopic",
                dataType: "json",
                contentType:"application/json;charset=UTF-8",
                type:"post",
                data:JSON.stringify($('#topicForm').serializeJSON())  ,
                beforeSend:function(){
                    $("#sendBtn").text("发布中").attr("disabled","disabled");
                },
                success:function(json){
                    if(json.status == "success"){
                        window.location.href="/topicDetail?topicid="+json.data.id;
                    }else {
                        swal("新增主题异常");
                    }
                },
                error:function(){
                    swal("服务器异常");
                },
                complete:function () {
                    $("#sendBtn").text("发布主题").removeAttr("disabled");
                }

            })

控制器

image.png

$('#formDemo').serializeJSON()返回的是一个Object体
{userName: "test", password: "test", role: "管理员", phone: "18888888866", nickName: "测试"}

JSON.stringify($('#formDemo').serializeJSON())返回的是JSON字符串
{"userName":"test","password":"test","role":"管理员","phone":"18888888866","nickName":"测试"}

参考资料
serializeJSON教程
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容