【问题标题】:400 Bad Request!! when I try to send ajax request to Servlet in spring mvc400 错误请求!!当我尝试在 spring mvc 中向 Servlet 发送 ajax 请求时
【发布时间】:2015-03-02 19:22:30
【问题描述】:
/*ajax request to servlet to perform update operation*/
var savedata={
              video_Title:videotitle, 
              video_duration:videoduration,
              video_Url:videourl,
              video_Description:videodescription

    };
         $.ajax({
           url:'videoUpdate',  
           type:'POST',  
           cache:false,
           data: savedata,
           contentType: "application/json; charset=utf-8",
           success: function(response) {
              alert("Updated Successfully");
        },
        error:function()
        {
        alert("oops sorry something went wrong. we apologize for the inconvenience");
        }   
        });



/*Controller Class*/

@RequestMapping(value ="videoUpdate",method =  RequestMethod.POST,consumes=MediaType.APPLICATION_JSON_VALUE)
    public @ResponseBody Status updateVideo(@RequestBody Video video) {

        try {

            System.out.println("update  servlet");
            dataServices.updateVideo(video);
            return new Status(1,"video updated Successfully");
        } 
        catch (Exception e) {
        return new Status(0,e.getMessage().toString());
        }
}

我的问题是如何在我的servlet类中接收ajax-json请求数据。这是在spring mvc中从ajax捕获一组数据的正确方法吗。或者需要其他注释来避免400错误!?

【问题讨论】:

  • 记录您的错误,您将获得有关问题所在的实际信息。
  • @codeseeker 当您使用@RequestBody Video video 时,您发送的数据是否与模型类绑定?似乎更多的请求数据不匹配?

标签: java ajax spring servlets


【解决方案1】:

如果你指定

contentType: "application/json; charset=utf-8",

这意味着您期望返回 JSON 数据 - 如果它不是有效的 JSON,那么它会进入错误块。

您可能正在返回一个字符串:

return new Status(0,e.getMessage().toString());

尝试省略 contentType 行。同时发布浏览器控制台错误可能有助于我们更轻松地确定问题。

注意:如果要指定传出数据类型,请使用 dataType 设置。

【讨论】:

  • 感谢@Dropout 的建议。问题是 Video 类的字段与 JSON 不完全匹配。
【解决方案2】:

400 Bad Request 很少发生,因为 urlvideoUpdate 无法映射到适当的映射。

这可能是因为您可能没有传递进行切入点所需的参数。
我建议您检查代码的以下部分:

var savedata={
              video_Title:videotitle, 
              video_duration:videoduration,
              video_Url:videourl,
              video_Description:videodescription

    };

并确保您传递了所需的参数。

【讨论】:

    【解决方案3】:

    假设您点击的 URL 是正确的,您可以查看 Video 类的字段是否与您发布的 JSON 完全匹配

    【讨论】:

      猜你喜欢
      • 2014-12-31
      • 1970-01-01
      • 2019-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-29
      • 2023-03-13
      • 2019-10-10
      相关资源
      最近更新 更多