使用ajax调用将html值传递给spring mvc控制器

时间:2017-03-19 20:00:26

标签: ajax jsp spring-mvc

我需要传递#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";
}

1 个答案:

答案 0 :(得分:1)

当您调用JSON.stringify()时,您将数据设置为字符串。 jQuery期望数据是普通对象或字符串,但假设如果数据是字符串,则它是查询字符串。你给它一个JSON字符串。如果您只使用普通对象获取数据并删除“JSON.stringify”,则此代码应该有效。

编辑:此功能的文档位于:http://api.jquery.com/jquery.ajax/

请注意有关设置对象中数据的部分。