2016-07-24 9 views
1

Der relevante Teil in Controller:Ajax-Aufruf zu Spring MVC Controler Bad Anfrage

@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){ ...} 

Der Ajax-Aufruf (Ich versuche, alles Integer haben) ich Onclick

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!!")} 
     } 
    }) 
} 

In meiner JSP rufen Sie diese Funktion:

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})'> 

ich habe andere Ajax zu meinem Controller ruft und alles funktioniert super und mir dieser Code se ems sehr ähnlich dem code schrieb vorher was wunderbar funktioniert. Jeder Parameter meiner Javascript-Funktion sollte Integer sein, aber ich "parseInt" sie trotzdem. Was gibt die .val() zurück? Ein Integer oder ein String? (Ich weiß JavaScript ist nicht wie Java, aber ich frage mich nur). Der Fehler Ich erhalte ist: Failed to load resource: the server responded with a status of 400 (Bad Request) Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen :)

Antwort

1

Sie sollten in Chrome Entwickler-Tools aussehen, so dass Sie die genaue POST-Anfrage sehen können, aber auf den ersten Blick sieht es aus wie die Fall nicht auf dem Parameter entspricht:

@RequestParam int ownerBalance 

vs

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

in Ihrer Anfrage. Sie können auch alle Ihre RequestParam s als nicht vorübergehend erforderlich markieren und sehen, ob das hilft.

+0

Vielen Dank @david! :) –