JQuery向Spring MVC控制器发送JSON
我无法使用jQueryAjax将JSON对象发送到SpringMVC控制器。这是我的控制器方法的定义:JQuery向Spring MVC控制器发送JSON,jquery,ajax,json,spring,model-view-controller,Jquery,Ajax,Json,Spring,Model View Controller,我无法使用jQueryAjax将JSON对象发送到SpringMVC控制器。这是我的控制器方法的定义: @Controller @RequestMapping(value = "InboxViewTemplate") public class InboxViewController { @ResponseBody @RequestMapping(value = "updateInboxView") public String updateInboxView(HttpServle
@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对象没有被传递。有人能帮我吗?提前感谢。首先,您的控制器不知道在哪里可以找到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) {
...
}
及
应该有用
我在这里假设您已经正确配置了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>
或者在您的SpringXML配置中为其他消息转换器提供类似的功能。您是否查看了日志文件以查找404的原因。我怀疑您需要jakson相关的jar文件来放入您的库。谢谢您的回复,现在我收到一个404错误。我还尝试了var obj=jQuery.parseJSON(“{”createUser“:“John”}”);并将此对象传递给mvc方法。似乎无法识别RequestBody对象。我应该试一试吗?还是我的ajax请求不正确?非常感谢。@carlo首先检查您是否可以连接到控制器(使用curl或telnet)。然后检查服务器日志中是否有任何错误。检查spring上下文中是否有。最后检查消息转换器是否配置正确。查看我的编辑。现在发生了一个我无法理解的想法:如果我删除注释@RequestBody,那么如果存在注释,则会调用服务。我有一个404错误。如何处理这种情况?谢谢。@carlo-hmm,请确保将jquery的请求类型更改为“post”。否则jquery将尝试在url中编码json,我认为spring还不知道如何处理它。是的,请求的类型是:$.ajax({dataType:“json”,contentType:“application/json”,url:ctx+“/InboxViewTemplate/updateInboxView”,type:“POST”,cache:false,data:{name:“appId”},success:function(data){$(“#updateInboxView”).html(数据);},错误:函数(jqXHR,textStatus,errorhorn){alert(jqXHR+”:“+textStatus+”:“+errorhorn);});
<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>