SSM:json数据,使用AJAX发送post请求和RequestBody接收参数,报错415及405的分析和解决

POST http://localhost:8080/blog/submitForm 415 (Unsupported Media Type)

POST http://localhost:8080/blog/submitForm 400 (Bad Request)

需求:将一个json字符串传给后台,使用ajax,结果实现的时候,前端先是415,后是400报错。把整个过程错误及解决的方法记录下来,供大家参考。

下图是我最开始的ajax代码及后台controller层接收方法的代码

    $(".layui-btn").click(function () {
        var params = {"title":$("#title").val(),"selectCategory":$("#selectCategory").val(),"content":$("#editor_container").val()}]
        $.ajax({
            type: "post",
            url: "/blog/submitForm",
            data: params,
            dataType: "json",
            success: function(result){
            }
        });
    })
   @RequestMapping(value = "/submitForm", method = RequestMethod.POST)
    @ResponseBody
    public String submitForm(@RequestBody JSONObject data){
        System.out.println("进入到submitForm");
        System.out.println(data.get("title"));
        System.out.println(data.get("content"));
        return "";
    }

运行时415报错:

POST http://localhost:8080/blog/submitForm 415 (Unsupported Media Type)

原因:缺少contentType:'application/json'

这是因为后台是以json对象接收参数,所以你在ajax请求这里要设置好。

这行代码是用来告诉服务器,应该用怎样的方式去处理请求主体。相当于是,你将请求主体中的数据发送出去之后,你还必须告诉服务器,我发送的数据是什么类型的,这样服务器才能正确解析请求主体的内容(如果没有content-type或者content-type的设置是错的,都会导致浏览器无法正确解析请求主体,也就无法对数据做出正确响应了。

加上上面暖说说代码后,运行报错提示400:

POST http://localhost:8080/blog/submitForm 400 (Bad Request)

原因:缺少data: JSON.stringify(params),

我现在的代码传输的并不是json类型,而在我的后台接收,是接收json对象,所以需要对params进行json化。

最终正确的代码如下

 var params = {"title":$("#title").val(),"selectCategory":$("#selectCategory").val(),"content":$("#editor_container").val()}
        $.ajax({
            type: "post",
            url: "/blog/submitForm",
            data: JSON.stringify(params),
            dataType: "json",
            contentType:'application/json',
            success: function(result){
            }

总结:不管是415还是400报错,都是“客户端发送的请求在语法上不正确。”即

所以使用ajax请求,多注意你的请求头设置。

引用:https://www.jianshu.com/p/3716212666d6

https://www.cnblogs.com/yeyuchangfeng/p/5623445.html

发布了22 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41623154/article/details/101237885