Spring MVC webapp的ajax调用被取消

时间:2018-09-19 22:49:14

标签: jquery ajax spring-mvc

我正在尝试使用jQuery ajax调用向我的Spring MVC控制器“ BaseController”中的方法“ foo_insert_udpate”发送JSON字符串。服务器是从Eclipse会话中启动的本地主机。

index.jsp --------

function popupFoo_update_submit() {
   aRowData = $('#form_popupFoo_update').serializeArray();
   var sRowData = JSON.stringify( aRowData);
   console.log( "sRowData is ", sRowData);
   $.ajax({
     url: 'foo_insert_update',
     type: "post",
     dataType: "json",
     contentType: "application/json; charset=utf-8",
     data: sRowData,
     success: function( response) {
         console.log( response);
         $('#fooTable').row( this).data( response).draw( false);    
     },
     error: function( e) {
         console.log(e);
         alert( "Error on update: " + e.message)
     }            
   });
}

BaseController -----

@RequestMapping(value="foo_insert_update", method = RequestMethod.POST)
public @ResponseBody String fooUpdateHandler( @RequestParam String json_InnString)
{
    logger.info("entering fooUpdateHandler with " + json_InnString);

    String json_OutString = null;
    // do stuff to populate json_OutString

    logger.info("exiting  fooUpdateHandler with " + json_OutString);
    return json_OutString;
} 

执行js函数,并填充sRowData并触发ajax调用,结果是执行了ajax的错误块,并且e.messsage未定义,并且在日志文件中查看发现fooUpdateHandler从未输入而我的chrome调试器的“控制台”标签显示该帖子返回了400错误。

关于如何a)修复和/或b)进一步调试的任何想法?

TIA,

code_warrior

2 个答案:

答案 0 :(得分:0)

尝试这种简化的方法实现:

@RequestMapping(value="/foo_insert_update", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public String fooUpdateHandler(@RequestBody String json) {
    return json;
}

... @RequestParam批注只能用于将URL参数映射到带注释的方法参数,例如http://www.google.de?q=searchphrase(q是一个值为'searchparam'的请求参数)-您要映射一个将在HTTP请求正文中发送的JSON对象...因此,您必须使用Spring的{{1} }注释!

答案 1 :(得分:0)

解决方案是将contextPath添加到ajax调用的网址中

url: '${pageContext.request.contextPath}/foo_insert_update',

感谢所有答复!

关闭案例

code_warrior