【问题标题】:Ajax request returns bad request (400) on POSTAjax 请求在 POST 上返回错误请求 (400)
【发布时间】:2016-04-11 06:35:28
【问题描述】:

我正在尝试发送这个失败的 ajax 调用。我真的不明白为什么会这样。

有人可以看看我的代码吗?

虽然在 fireBug 中我可以看到有效负载正在正确转换,但调用甚至没有命中控制器代码(在我看来)。

jquery

function userAdd(){
    var array2=new Array();
    var array1=new Array();

    var value2=$('input:checkbox.value2').each(function () {
        if(this.checked){
           array2.push($(this).attr('itemLabel'));
        }
      });

    var value1=$('input:checkbox.value1').each(function () {
        if(this.checked)
        array1.push( $(this).attr('itemLabel'));
      });

    var report = ({
                    user:user,
                    address:$("#address").val(),                
                    regimesRemove:array2,
                    regimesReport:array1

                });


        jQuery.ajax( {
                    async : false,
                    cache : false, 
                    url : "/myapp/user/addUser",
                    type : 'POST',
                    contentType: "application/json; charset=utf-8", 
                    dataType : 'json', 
                    data:JSON.stringify(report),
                    success : function(data) {
                         if(data.errorMessage == undefined){
                            alert(data.errorMessage);
                            window.location.reload();
                        }else if(data.errorMessage !=''){
                            alert(data.errorMessage); 
                            window.location.href="/myapp/user";
                        else 
                            window.location.href="/myapp/user";
                    },
                    complete : function(request, status) {
                     if (status == undefined || status == "error" || status == "parsererror") {

                            alert("Error with status: "+status);
                            window.location.href="/myapp/user/";
                        } else if (status != 'success'){
                            alert("error with status: "+status);
                            alert('error in searching Invalid or submitted records: '+status);
                }
        }
    }); 
}         

Java

 @RequestMapping(value="/addUser",method=RequestMethod.POST)
     public @ResponseBody Report updateRulesForRequest(Model model, HttpServletRequest request,@RequestBody Report report){



     }

日志

Request URL:http://localhost:8080/myapp/user/addUser
Request Method:POST
Status Code:400 Bad Request
Response Headers
view source
Cache-Control:must-revalidate,no-cache,no-store
Content-Length:1417
Content-Type:text/html;charset=ISO-8859-1
Server:Jetty(7.0.2.v20100331)
Request Headers
view source
Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:335
Content-Type:application/json; charset=UTF-8
Cookie:timezoneOffset=330; timezoneOffset=330; JSESSIONID=16ukve3dwiqt6
Host:localhost:8080
Origin:http://localhost:8080
Referer:http://localhost:8080/myapp/selectUser/getUser?Id=C9067134CA9711E56095E83935B46D68
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36
X-Requested-With:XMLHttpRequest

【问题讨论】:

  • HTTP 状态码 400 表示您的请求有问题。你能在这里从萤火虫那里复制粘贴你的ajax请求吗?这将有助于确定问题。另外,你的控制器类已经映射到/user,对吧?
  • 是的,没错!它已被映射到 /user
  • 您的请求中是否包含'"
  • Report是否与您发送到服务器的数据结构完全匹配? async : false 真的很糟糕,cache : false 毫无意义。

标签: jquery ajax spring-mvc


【解决方案1】:

确保您用于访问控制器方法的 url 是正确的。 尝试在 ajax 请求中使用更新后的 url 值。

jQuery.ajax( {
                async : false,
                cache : false, 
                url : "${pageContext.request.contextPath }/myapp/user/addUser",
                type : 'POST',
                contentType: "application/json; charset=utf-8", 
                dataType : 'json', 
                data:JSON.stringify(report),
                success : function(data) {
                     if(data.errorMessage == undefined){
                        alert(data.errorMessage);
                        window.location.reload();
                    }else if(data.errorMessage !=''){
                        alert(data.errorMessage); 
                        window.location.href="/myapp/user";
                    else 
                        window.location.href="/myapp/user";
                },
                complete : function(request, status) {
                 if (status == undefined || status == "error" || status == "parsererror") {

                        alert("Error with status: "+status);
                        window.location.href="/myapp/user/";
                    } else if (status != 'success'){
                        alert("error with status: "+status);
                        alert('error in searching Invalid or submitted records: '+status);
            }
    }

【讨论】:

  • 尝试使用更新后的 url ${pageContext.request.contextPath }/myapp/user/addUser
  • 尝试从控制台更新错误,并将日志记录到您的问题中
猜你喜欢
  • 1970-01-01
  • 2015-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-24
  • 1970-01-01
  • 2020-04-23
  • 1970-01-01
相关资源
最近更新 更多