Ajax调用Spring MVC Controler Bad请求

时间:2016-07-24 00:23:19

标签: javascript jquery jsp spring-mvc

Controller中的相关部分:

@RequestMapping(value= "/makeTransfer", method = RequestMethod.POST)
    public @ResponseBody String makeTransfer(Map<String, Object> model, @RequestParam int id,  @RequestParam int sum, @RequestParam int ownerAccount,  @RequestParam int ownerBalance, @RequestParam int receiverAccount){ ...}

Ajax调用(我试图让所有内容都整数)

function transfer(obj, idd, ownerAcc, ownerbal){
    var receiverAccount = parseInt($(obj).parent().find('#recAcc_field').val());
    var sum = parseInt($(obj).parent().find('#sum_field').val());
    var updatedSum = ownerbalance - sum;
    var id = parseInt(idd);
    var ownerAccount = parseInt(ownerAcc);
    var ownerbalance = parseInt(ownerbal);
    alert(ownerbalance);
    $.ajax({
        type : "POST",
        url : "makeTransfer.html",
        data: ({id : id, sum : sum, ownerAccount : ownerAccount, ownerbalance : ownerbalance, receiverAccount : receiverAccount}),
        success : function(data) {
            if (data=="success") {$(obj).closest('tr').find('#accBalance').val(updatedSum)}
            else {alert("error!!")}
        }
    })
}

在我的JSP中,我使用onclick调用该函数:

Receiving Account: <input id="recAcc_field" type="text"> 
Sum: <input id = "sum_field" type="text" onblur="checkTransfer(this,${account.balance})">
<input id="transferButton" disabled type="submit" value="Transfer" onclick='transfer(this, ${personna.id}, ${account.accountId}, ${account.balance})'>

我有其他Ajax调用我的控制器,一切都很好,对我来说这个代码看起来非常类似于之前编写的代码非常有效。我的javascript函数的每个参数都应该是Integer,但无论如何我都是“parseInt”。 .val()返回什么?一个整数还是一个字符串?(我知道JavaScript不像Java,但只是想知道)。 我得到的错误是:Failed to load resource: the server responded with a status of 400 (Bad Request) 如果您需要其他信息,请与我们联系:)

1 个答案:

答案 0 :(得分:1)

您应该查看Chrome开发者工具,这样您就可以看到确切的POST请求,但乍看之下情况似乎与您的参数不匹配:

@RequestParam int ownerBalance

VS

data: ({id : id, sum : sum, ownerAccount : ownerAccount, ownerbalance : ownerbalance, receiverAccount : receiverAccount}),
enter code here

在您的请求中。您还可以将所有RequestParam标记为暂时不需要,并查看是否有帮助。