ajax를 사용하여 서버에 양식을 제출하려고합니다. 다양한 자습서를 살펴 보았지만 내 자신의 오류를 파악할 수 없었습니다. 방금 아약스를 배우기 시작 했으므로 아무 것도 시도하지 않았지만 콘솔에 json 문자열을 보내고 표시했습니다.봄 mvc - Ajax 응답
@RequestMapping(value="/create/transaction", method=RequestMethod.POST)
@ResponseBody
public String createTran(@RequestBody String json) throws IOException {
LOGGER.info("Create New Transaction");
System.out.println("--- Json: " + json);
ObjectMapper mapper = new ObjectMapper();
MyTransaction tranValue = mapper.readValue(json, MyTransaction.class);
MyTransaction tran = MyTransaction.getInstance();
tran.setName(tranValue.getName());
tran.setAmount(tranValue.getAmount());
return toJson(tran);
}
private String toJson(MyTransaction tran) {
ObjectMapper mapper = new ObjectMapper();
try {
String value = mapper.writeValueAsString(tran);
LOGGER.info("---- Value: " + value);
return value;
} catch(JsonProcessingException e) {
LOGGER.debug("----- Fail");
e.printStackTrace();
return null;
}
}
내 양식 :
이
내 컨트롤러<form id="c-t-form" method="post" action="${pageContext.request.contextPath}/create/transaction">
<div class="modal-form">
<h3>Create New Transaction</h3>
<table class="table-form">
<tr>
<td class="c-50">
<label for="c-t-t">Title</label>
<span id="c-t-t-error" class="c-t-t-error error">Please enter the budget title.</span>
<div class="input-txt">
<input id="c-t-t" class="txt" type="text" name="name"/>
</div>
</td>
<td class="c-10">
<label for="c-t-a">Amount</label>
<span id="c-t-a-error" class="c-t-a-error error">Please enter correct budget amount.</span>
<div class="input-txt">
<input id="c-t-a" class="txt" type="text" name="amount"/>
</div>
</td>
</tr>
<tr>
<td>
<div>
<input class="submit-btn acc-btn" name="t-b" type="submit" value="Save" />
</div>
</td>
</tr>
</table>
</div>
</form>
이 내 아약스 스크립트입니다 :
$(document).ready(function() {
$("#c-t-form").submit(function(event) {
var tranName = $('#c-t-t').val();
var amount = $('#c-t-a').val();
var data = {"name" : tranName,"amount" : amount};
$.ajax({
url: $('#c-t-form').attr('action'),
data: JSON.stringify(data),
type: "POST",
cache: false,
beforeSend:function(xhr) {
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("Content-Type", "application/json");
},
success: function(reponse) {
alert("success");
},
error: function(xhr, status, error) {
alert(status);
}
});
return true;
});
});
내가 코드 몇 시간 만 나오지 않았어에서 봐 내 구현에서 오류를 찾지 못했습니다.
class MyTransaction {
private int id;
private String name;
private String details;
private Bigdecimal amount;
// getters and setters
}
어떤 힌트가 도움이 될 것이다 : 이것은 내가
SEVERE: Servlet.service() for servlet [spring] in context with path [/budgetme] threw exception
com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'name': was expecting 'null', 'true', 'false' or NaN
at [Source: name=asda&amount=12&t-d=&t-b=Save; line: 1, column: 5]
내 모델을 점점 오전 오류입니다. 고맙습니다.
당신이 당신의 로그에 "새 트랜잭션 만들기"를 얻고있다 ?? – RE350
MyTransaction 클래스를 게시하십시오. – RE350
코드를 편집했습니다. 클래스에는 인스턴스 필드 만 포함됩니다. – WhatAName