【问题标题】:POST returns 404 while GET works fine on Ajax call to SpringMVC controllerPOST 返回 404,而 GET 在 Ajax 调用 Spring MVC 控制器时工作正常
【发布时间】:2020-03-09 09:57:01
【问题描述】:

我必须将一个长 Base64 字符串从我的 JSP 传递到我的控制器。 我的控制器上有我所有的@requestmapping 方法作为GET 方法。 当我尝试将 base64 字符串作为子值发送时,它抛出了一个错误,说明标头大小存在问题。一些研究让我明白,如果我的方法接受 POST 请求,这不是问题。

我一直在为我的 get 方法使用相同的代码,并且它们运行良好...但是当我将其更改为 post 时,它开始抛出 404。

这是我正在做的事情:

JS:

变量搜索 = { “核心价值” }

        $.ajax({
                type : "POST",
                contentType : 'application/json; charset=utf-8',
                dataType : 'json',
                url : "/AjaxTest",
                data : JSON.stringify(search),
                success : function(result) {
                    console.log("SUCCESS: ", data);
                    alert(result);
                },
                error: function(e){
                    console.log("ERROR: ", e);
                    alert(e);
                },
                done : function(e) {
                    console.log("DONE");
                }
        });

控制器:

@RequestMapping(value = "/AjaxTest", method = RequestMethod.POST)
    public @ResponseBody String AjaxTest(@RequestBody String MyData) {
        return MyData;
    }

谁能告诉我我错过了什么?

提前致谢

【问题讨论】:

  • 你能检查一下你从浏览器发布的 url -> 网络中得到了什么,然后点击这个请求会给你这个 url,从那里?当你得到 404 ..
  • 我在这里看到两个问题,首先你的请求映射没有指定消费和生产细节。所以我将首先将这些值作为 MediaType.APPLICATION_JSON_UTF8。其次,我看到键值对作为请求的一部分出现,但是您的方法参数 @requestBody 被映射到一个字符串。将其更改为 pojo 以匹配键名或更改您的请求结构。让我知道这两件事是否有效?

标签: json ajax spring-mvc post


【解决方案1】:

我认为问题在于您指定了type: "POST",但实际的jQuery.ajax 函数使用method 属性来指定http 方法。 GET 起作用的原因是方法属性默认为GET。试试这样的:

$.ajax({
    method : "POST",
    contentType : 'application/json; charset=utf-8',
    dataType : 'application/json',
    url : "/AjaxTest",
    data : JSON.stringify(search),
    success : function(result) {
        console.log("SUCCESS: ", data);
        alert(result);
    },
    error: function(e){
        console.log("ERROR: ", e);
        alert(e);
    },
    done : function(e) {
        console.log("DONE");
    }
});

【讨论】:

  • 现在它给了我这个错误:加载资源失败:服务器响应状态为 405(不允许方法)
  • 您是否尝试将 dataType 指定为 'application/json' 而不仅仅是应用程序?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
  • 2014-11-24
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
  • 1970-01-01
相关资源
最近更新 更多