为什么成功函数在春季 MVC 中不起作用



在jquery中单击提交按钮时,进行了以下ajax调用,但其成功函数不起作用。

$.ajax({
url: "hai.htm",
type: "POST",
dataType: "application/json",
data:{
name:name,
pass:pass,
},
success: function (data) {
alert("success");
var obj = JSON.parse(data);  
alert(obj[0].name);
}   
error: function (error) {
alert('error; ' + eval(error));
console.log(error);
}             
})

控制器类图像如下所示

我的控制器类是

package com.safecare.spring;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class controller {
@RequestMapping(value = "hai")
public @ResponseBody Map hai(@RequestParam(value = "name",required = false) String name,@RequestParam(value = "pass",required = false) String pass) {
Map ma=new HashMap();
ma.put("name", name);
ma.put("pass", pass);
System.out.println(name);
return ma;
}
}

错误消息如下: " 此请求标识的资源只能根据请求"接受"标头生成具有不可接受特征的响应。">

试试这个

@Controller
@RequestMapping("/controllerName")
public class Controller{
@RequestMapping(value="/hai", ... )
public @ResponseBody String hai( ... ) {
JSONObject obj = new JSONObject();
obj.put("name", name);
obj.put("pass", pass);
return obj.toString();
}
}

然后将你的 ajax 更新为,

$.ajax({
url: "/ContextPath/controllerName/hai",
type: "POST",
dataType: "json",
data:{
name:name,
pass:pass,
},
success: function (data) {
alert("success");
alert(data.name);
},
error: function(){
alert("Error");
}
});

在 url 中,将"/ContextPath"替换为您的上下文路径。

我的问题已经解决了。 在控制器类中使用 GSON。

@Controller
public class controller {
@RequestMapping(value = "hai")
public @ResponseBody String hai(@RequestParam(value = "name",required = false) String name,@RequestParam(value = "pass",required = false) String pass) {
Map ma=new HashMap();
ma.put("name", name);
ma.put("pass", pass);
System.out.println(name);
Gson ob=new Gson();
ob.toJson(ma);
return ob.toJson(ma);
}

感谢您的回复