我需要传递 #question 的值,并 #answer到我的弹簧MVC控制器使用AJAX。当前问题返回 ",当我在控制器中检查它们的值时,答案返回 null。
.jsp:
<form class="form-horizontal" role="form" id="add-form">
<div class="form-group">
<label for="question" class="col-md-4 col-sm-4 col-xs-12 control-label">
Question:
</label>
<div class="col-md-4 col-sm-6 col-xs-12">
<textarea class="add-form form-control" path="question" rows="5" id="question" name="question"></textarea>
</div>
</div>
<div class="form-group">
<label for="question" class="col-md-4 col-sm-4 col-xs-12 control-label">
Answer:
</label>
<div class="col-md-4 col-xs-12 col-sm-6">
<textarea class="container add-form form-control" path="answer" rows="5" id="answer" name="answer"/></textarea>
</div>
</div>
<div class="form-group">
<div class='col-md-offset-4 col-md-4 col-sm-offset-4 col-sm-4'>
<button type='submit' id='create-button' class='btn btn-default'>
Create Card
</button>
</div>
</div>
</form>
.JS:
function addCard(){
$('#message').empty();
$.ajax({
type: 'POST',
url: 'createCard',
data: JSON.stringify({
question: $('#question').val(),
answer: $('#answer').val()
}),
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
'dataType': 'json',
success: function(){
$('#question').val('');
$('#answer').val('');
$("#message").append("<b>A Card has been created Successfully</b>");
},
error: function(){
$('#message').append("<b>FAIL!!!!</b>");
}
});
}
控制器:
@RequestMapping(value = "/createCard", method = RequestMethod.POST)
@ResponseBody
public String createCard(@RequestBody Map<String, String> cardMap) throws FCPersistenceException {
Card card = new Card();
card.setQuestion(cardMap.get("question"));
card.setAnswer(cardMap.get("answer"));
card.setCurrPeriod(Period.ZERO);
dao.addCard(card);
return "redirect:/add/displayCreateCard";
}
当你调用 JSON.stringify(( 时,你正在将数据设置为一个字符串。 jQuery 期望数据是纯对象或字符串,但假设如果数据是字符串,则它是查询字符串。你给它一个 JSON 字符串。如果您只是使用纯对象作为数据并删除"JSON.stringify",则此代码应该有效。
编辑:此函数的文档在这里:http://api.jquery.com/jquery.ajax/
请注意有关设置对象中的数据的部分。