Necesito pasar los valores de #pregunta y #respuesta a mi controlador spring mvc usando ajax. la pregunta actual devuelve "" y la respuesta devuelve nulo cuando compruebo sus valores dentro del controlador.
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>"); } }); }Controlador:
@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"; }Está configurando datos en una cadena cuando llama a JSON.stringify(). jQuery espera que los datos sean un objeto simple O una cadena, pero asume que si los datos son una cadena, es una cadena de consulta. Le estás dando una cadena JSON. Si solo usa el objeto simple para datos y elimina "JSON.stringify", este código debería funcionar.
EDITAR: La documentación para esta función está aquí: http://api.jquery.com/jquery.ajax/
Tenga en cuenta la sección sobre datos en el objeto de configuración.