Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery AJAX回调中的alert()显示[Object]_Jquery_Ajax_Spring Mvc - Fatal编程技术网

Jquery AJAX回调中的alert()显示[Object]

Jquery AJAX回调中的alert()显示[Object],jquery,ajax,spring-mvc,Jquery,Ajax,Spring Mvc,我调用下面的函数在Spring控制器中执行一些操作。问题是警报消息不包含我正在发送的消息,而是打印[对象]。是否有方法发送特定消息,根据结果打印并发送状态代码 功能SaveButton按钮{ var data=gatherDatabutton; $.ajax{ 类型:POST,, url:“/editRecord”, 数据:数据, 数据类型:“json”, contentType:false, processData:false, 成功:功能响应{ 警报响应; }, 错误:函数错误{ alert

我调用下面的函数在Spring控制器中执行一些操作。问题是警报消息不包含我正在发送的消息,而是打印[对象]。是否有方法发送特定消息,根据结果打印并发送状态代码

功能SaveButton按钮{ var data=gatherDatabutton; $.ajax{ 类型:POST,, url:“/editRecord”, 数据:数据, 数据类型:“json”, contentType:false, processData:false, 成功:功能响应{ 警报响应; }, 错误:函数错误{ alertgetData.doneerror; } }; } @RequestMappingvalue=/editRecord,method=RequestMethod.POST 公共@ResponseBody 字符串EditRecordHttpServletRequestHttpRequest { Map Map=httpRequest.getParameterMap; //做事 字符串messageToReturn=; 如果userService.updateTablepr.getUpdateQueryfileMap { messageToReturn=操作成功; } 其他的 messageToReturn=操作失败; 返回消息返回; }
您从spring控制器发送的数据可通过response.data获得

success: function (response) {
  alert(response.data);
},
error: function (error) {
  alert(getData().done(error.data));
}
您的方法返回文本,即messageToReturn not JSON。您可以按如下方式生成文本:

@RequestMapping(value = "/editRecord", method = RequestMethod.POST, produces="text/plain")
public @ResponseBody String editRecord(HttpServletRequest httpRequest){}
在这种情况下,从AJAX方法中删除数据类型:“json”

但是如果您返回JSON,那么您可以以JSON格式键入它

messageToReturn = "{\"check\":\"Operation was successful\"}"; //(without produces="text/plain")
然后像这样访问它:

success: function(response) {
 console.log(response.check);
}
我使用Jackson库的ObjectMapper Jackson数据绑定完成了这项工作。只需修改您的方法,如下所示:

@RequestMapping(value = "/editRecord", method = RequestMethod.POST)
public @ResponseBody
String editRecord(HttpServletRequest httpRequest) 
{
  Map<String, String[]> map = httpRequest.getParameterMap();

  // do stuff

  String messageToReturn = "";
  if (userService.updateTable(pr.getUpdateQuery(fileMap))) 
  {
    messageToReturn = "Operation was successful";
  } 
  else
    messageToReturn = "Operation failed";

  ObjectMapper mapper = new ObjectMapper();
  String json = mapper.writeValueAsString(messageToReturn);
  return json;
}

这正是为什么您永远不应该使用alert进行调试——它将提供给它的所有数据强制为字符串。使用console.logdata或console.dirdata代替。问题不在于它返回一个对象。问题是关于打印Spring控制器发送的消息。如果您要返回一个对象,那么您不会返回该字符串。您需要首先弄清楚要返回的对象的内容是什么,然后了解发生这种情况的原因。
success: function(response) {
  alert(response.responseText);
},