JQuery 将 JSON 发送到 Spring MVC Controller

标签 jquery ajax json spring model-view-controller

我无法使用 JQuery Ajax 将 JSON 对象发送到 Spring MVC Controller 。这是我的 Controller 方法的定义:

@Controller
@RequestMapping(value = "InboxViewTemplate")
public class InboxViewController {

@ResponseBody
    @RequestMapping(value = "updateInboxView")
    public String updateInboxView(HttpServletRequest request, InboxView inboxView) {
...
}

然后我尝试调用此请求:

$.ajax({
            dataType: 'json',
            contentType: "application/json",
            url: ctx + "/InboxViewTemplate/updateInboxView",
            data: ({inboxView : {createUser:"dave"}}),
            success: function(data) {
                $("#updateInboxView").html(data);
            },
            error: function (jqXHR, textStatus, errorThrown) {
                alert(jqXHR + " : " + textStatus + " : " + errorThrown);
            }
          });
      }

但 JSON 对象未传递。有人能帮我吗?提前致谢。

最佳答案

首先,您的 Controller 不知道在哪里寻找 InboxView。是请求参数吗?路径参数?请求正文?

其次,您可能希望将 json 请求类型更改为 POST 或 PUT,因为您要更新数据而不仅仅是检索数据。

所以像这样:

@Controller
@RequestMapping(value = "InboxViewTemplate")
public class InboxViewController {

@ResponseBody
    @RequestMapping(value = "updateInboxView", method = RequestMethod.POST)
    public String updateInboxView(HttpServletRequest request, @RequestBody InboxView inboxView) {
    ...
} 

$.ajax({
            dataType: 'json',
            contentType: "application/json",
            url: ctx + "/InboxViewTemplate/updateInboxView",
            type: 'POST',
            data:  JSON.stringify({inboxView : {createUser:"dave"}}), //if no JSON is available use the one from https://github.com/douglascrockford/JSON-js
            success: function(data) {
                $("#updateInboxView").html(data);
            },
            error: function (jqXHR, textStatus, errorThrown) {
                alert(jqXHR + " : " + textStatus + " : " + errorThrown);
            }
          });
      }

应该可以。

我假设您已正确配置 json 消息转换器。

编辑 这意味着你有:

<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
  <list>
    <ref bean="jacksonMessageConverter"/>
  </list>
</property>
</bean>

或 spring xml 配置中其他消息转换器的等效内容。

关于JQuery 将 JSON 发送到 Spring MVC Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8653915/

相关文章:

jquery - 如何使用 jQuery 设置背景图像高度?

javascript - JS - 水平滚动

javascript - 如何在 getElementById 中使用数组?

java - onload() 的使用错误?

javascript - Ajax POST 工作,但 php 文档无法获取数据变量

java - 如何将带有 JSON 对象的 "Put"请求发送到 Java 中的 JSONPlaceHolder REST API

jquery - 如何根据包含的div的大小设置图像的大小?

asp.net-mvc - 使用 jquery ajax 传递多个复选框值

php - 使用 Curl 在 PHP 中使用用户名和密码访问 API

c# - 通过对象 ID 更新数组对象的 jsonpatch 路径