ajax请求如果是json的方式,服务器无法获取参数

ajax请求如果是json的方式,服务器无法获取参数

按老师的代码如果请求参数是使用"参数名=数据"的方式进行提交数据,spring mvc可以获取到数据。

但是当ajax请求使用json进行数据提交时,spring mvc的post put delete请求都无法获取到参数,请问是什么问题呢?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="jquery-3.4.1.min.js"></script>
    <script>
        $(function () {
            $("#get").click(function () {
                $.ajax({
                    type : "get",
                    url : "/rest/get",
                    contentType: "application/json;charset=utf-8",
                    data : {"name" : "获取"},
                    success : function(json) {
                        $("#context").text(json);
                    }
                });
            });
            $("#post").click(function () {
                $.ajax({
                    type : "post",
                    url : "/rest/post",
                    contentType: "application/json;charset=utf-8",
                    data : {"name" : "测试"},
                    success : function(json) {
                        $("#context").text(json);
                    }
                });
            });
            $("#put").click(function () {
                $.ajax({
                    type : "put",
                    url : "/rest/put",
                    contentType: "application/json;charset=utf-8",
                    data : {"name" : "修改"},
                    success : function(json) {
                        $("#context").text(json);
                    }
                });
            });
            $("#delete").click(function () {
                $.ajax({
                    type : "delete",
                    url : "/rest/delete",
                    contentType: "application/json;charset=utf-8",
                    data : {"name" : "删除"},
                    success : function(json) {
                        $("#context").text(json);
                    }
                });
            });
        });
    </script>
</head>
<body>
    <input id="get" type="button" value="get请求"/>
    <input id="post" type="button" value="post请求"/>
    <input id="put" type="button" value="put请求"/>
    <input id="delete" type="button" value="delete请求"/>
    <br/>
    <div id="context"/>
</body>
</html>
package com.test.controller;

import com.test.entity.Entity;
import org.springframework.web.bind.annotation.*;

@org.springframework.web.bind.annotation.RestController
@RequestMapping("/rest")
public class RestController {

    @GetMapping("test1")
    public Entity test1(int id, String name) {
        Entity entity = new Entity(id, name);
        return entity;
    }

    @GetMapping("test2")
    public String test2(int id, String name) {
        return "{\"id\":" + id + ",\"name\":\"" + name + "\"}";
    }

    @GetMapping("get")
    public String getTest(String name) {
        return "{\"name\":\"" + name + "\"}";
    }

    @PostMapping("post")
    public String postTest(String name) {
        return "{\"name\":\"" + name + "\"}";
    }

    @PutMapping("put")
    public String putTest(String name) {
        return "{\"name\":\"" + name + "\"}";
    }

    @DeleteMapping("delete")
    public String deleteTest(String name) {
        return "{\"name\":\"" + name + "\"}";
    }
}

web.xml的FormContentFilter过滤器已配置

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,这里使用json提交数据 ,后台应该使用get才能接收到数据。这里理解错误,将put请求,delete请求转换为get请求是指在form表达中,增加<input type="hidden" name="_method" value="get">这种方式,在web.xml中,经过HiddenHttpMethodFilter过滤器,会将其他请求转换为get请求。过滤器配置如:

http://img1.sycdn.imooc.com//climg/5e50fccb09418dd410560215.jpg

祝:学习愉快~

好帮手慕阿满 2020-02-21 19:06:52

同学你好,post,put,delete请求无法获取,那么get请求是否可以获取数据呢?建议同学在web.xml中是否将put请求,delete请求转换为get请求再试试。

祝:学习愉快~

  • 提问者 慕仰4397261 #1
    get请求是可以获取了,可是不太明白web.xml中如何吧put,delete改变成get请求呢
    2020-02-22 11:19:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师