我需要传递#question和#answer的值 使用ajax到我的spring mvc控制器。 当我在控制器中检查它们的值时,当前问题返回“”并且回答返回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";
}
答案 0 :(得分:1)
当您调用JSON.stringify()时,您将数据设置为字符串。 jQuery期望数据是普通对象或字符串,但假设如果数据是字符串,则它是查询字符串。你给它一个JSON字符串。如果您只使用普通对象获取数据并删除“JSON.stringify”,则此代码应该有效。
编辑:此功能的文档位于:http://api.jquery.com/jquery.ajax/
请注意有关设置对象中数据的部分。