Spring MVC + AJAX调用不在JQuery脚本中返回

时间:2017-06-01 21:22:07

标签: jquery ajax spring spring-mvc

我正在尝试在我的Spring应用程序中实现一个非常基本的AJAX调用(之前从未使用过AJAX)。现在我只是尝试进行一个返回字符串的调用,并更新表单中的文本区域。我知道JQuery代码被调用没有问题因为我可以调试我的浏览器中的发送部分,并且控制器正在获取请求。我认为@ResponseBody注释在某种程度上应该神奇地返回方法返回值的内容,但它像JQuery一样不会“看到”它或其他东西。控制器只返回字符串,整个html页面只显示字符串。我无法在JQuery调用中调试SUCCESS部分。我在这里错过了什么吗?

表单(为了便于阅读而截断)

<form id="ajaxTaskUpdate" th:action="@{/updateTask}" th:object="${Task}" method="post"> 
     <textarea id="taskDescription" name="taskDescription" class="materialize-textarea blue" th:text="${task.description}" maxlength="250"></textarea>
</form>

Jquery片段

$('#ajaxTaskUpdate').submit(function(event) {
            $.ajax({
                url : $("#ajaxTaskUpdate").attr("action"),
                data : data,
                type : "POST",
                success : function(response) {
                    //BREAKPOINT NEVER HITS HERE
                    $("#taskDescription").text(response);
                },
                error : function(xhr, status, error) {
                    alert(xhr.responseText);
                }
            });

            return false;
});

Spring Controller

@RequestMapping(value = "/updateTask",  produces = "application/json", method = RequestMethod.POST)
@ResponseBody
public  String updateTask(Task task) {
    //I want this to be "ajaxed" into my form's text area
    return "successful Ajax Response!";
}
控制器响应后

GUI

enter image description here

1 个答案:

答案 0 :(得分:1)

您实际上是通过将表单提交到服务器来请求发布。虽然页面已刷新,但您的ajax请求无法执行。我必须留在页面上执行任何javascript方法或事件。

  1. 您已停止从html提交按钮提交表单以执行ajax请求
  2. 修复像/updateTask或您想要的任何地方
  3. 的ajax网址
  4. 在ajax
  5. 中将dataType设置为json
  6. 在控制器
  7. 中将Task作为@RequestBody
  8. 制作控制器consumes=MediaType.APPLICATION_JSON_VALUE
  9. 在ajax参数
  10. 中创建data json字符串