首页 > 解决方案 > 调用 AJAX 方法时出现 400(错误请求)

问题描述

我在按钮的 onClick() 事件的帮助下调用 AJAX 方法。

 function submitDateFunction()
 {
   var previousExceptions=new Object();
  previousExceptions.batchId=batchId;
  previousExceptions.dateFrom=dateFrom;
  previousExceptions.dateTo=dateTo;
 $.ajax({
        type:"POST",
        url : 'getPreviousExceptions/',
        dataType:'json',
        data: JSON.stringify(previousExceptions),
        contentType : 'application/json',
        success : function(data) {
        alert("success");

        },
         error: function(jqXHR, exception) { 
                alert(jqXHR.status); 
            } 
    });

我的 Spring 控制器方法

@RequestMapping(value={"batchdetails/previousExceptions/getPreviousExceptions"},method=RequestMethod.POST)
@ResponseBody
    public List<BatchExceptionDetails> displayPreviousExceptions(@RequestBody PreviousException previousException)
{
    ...

    return batchExceptionDetails;

}

}

这是我以前的异常类

package com.bmdashboard.beans;

import java.util.Date;

public class PreviousException {

    private int batchId;
    private Date dateFrom;
    private Date dateTo;



    public PreviousException() {
        super();
    }
    public int getBatchId() {
        return batchId;
    }
    public void setBatchId(int batchId) {
        this.batchId = batchId;
    }
    public Date getDateFrom() {
        return dateFrom;
    }
    public void setDateFrom(Date dateFrom) {
        this.dateFrom = dateFrom;
    }
    public Date getDateTo() {
        return dateTo;
    }
    public void setDateTo(Date dateTo) {
        this.dateTo = dateTo;
    }
    @Override
    public String toString() {
        return "PreviousException [batchId=" + batchId + ", dateFrom="
                + dateFrom + ", dateTo=" + dateTo + "]";
    }



}

调用 JavaScript 函数的按钮

<input type="submit" value="Submit" onclick="submitDateFunction()" >

我通过以下方式获得价值:

 var batchId=document.getElementById('batchIdForAjax').innerHTML;
 var dateFrom;
 var dateTo;

  $(function() {
    $( "#datepickerFrom" ).datepicker({ dateFormat: "yy-mm-dd" });
    $("#datepickerFrom").on("change",function(){
       dateFrom = $(this).val();

    });
});

$(function() {
    $( "#datepickerTo" ).datepicker({ dateFormat: "yy-mm-dd" });
    $("#datepickerTo").on("change",function(){
        dateTo = $(this).val();

    });
});

通过 Google Chrome 开发人员的工具控制台进行调试时,我收到错误 POST http://.../getPreviousExceptions/400 ( Bad Request)。

标签: javajqueryjsonajaxspring

解决方案


我将 dateFrom 和 dateTo 的数据类型从 java.util.date 更改为 String 并修改了我的 AJAX,如下所示

var previousExceptions = {
      "batchId" : batchId,
      "dateFrom":dateFrom,
      "dateTo":dateTo     
   };


$.ajax({
            type:"POST",
            url : 'getPreviousExceptions/',
            dataType: 'json',
            data: JSON.stringify(previousExceptions),
            contentType : 'application/json; charset=utf-8',
            success : function(data) {
...

推荐阅读