【发布时间】:2015-12-23 04:48:59
【问题描述】:
我是 jQuery 新手,正在尝试使用 Ajax 调用 Web 服务。这似乎是相当简单的代码,但不知何故无法理解其失败的原因。我尝试了所有可能的方法(我能想到的),但不知何故没有让它发挥作用。
jsp代码:
function tmpData() {
var dataObject = JSON.stringify({
'empfname': "First Name",
'emplname': "Last Name"
});
alert("dataObject=" + dataObject);
$.ajax({
url:"http://localhost:8080/OnlineStore/kmsg/grocery/tmpinfo",
type:"POST",
contentType: 'application/json',
data: dataObject,
done: setData,
fail: displayError()
});
}; // end of function
控制器:
@RestController
@RequestMapping("/kmsg/grocery")
public class TmpSvcImpl implements TmpSvcInt {
@Override
@RequestMapping(value = "/tmpinfo", method = RequestMethod.POST, headers = "Accept=application/json")
public @ResponseBody Map<String, Object> setData(@RequestBody final Emp employee1) throws Exception {
System.out.println("employee1=" + employee1);
String fname = employee1.getEmpfname();
String lname = employee1.getEmplname();
System.out.println("fn=" + fname ) ;
System.out.println("ln=" + lname ) ;
return null;
}
}
模型类:
public class Emp implements Serializable {
private static final long serialVersionUID = 1L;
String empfname;
String emplname;
public String getEmpfname() {
return empfname;
}
public void setEmpfname(String empfname) {
this.empfname = empfname;
}
public String getEmplname() {
return emplname;
}
public void setEmplname(String emplname) {
this.emplname = emplname;
}
public Emp(String fn, String ln){
this.empfname = fn ;
this.emplname = ln ;
}
@Override
public String toString() {
return "Emp {empfname=" + empfname + ", emplname=" + emplname + "}" ;
}
}
【问题讨论】:
-
我可能是错的,但我不认为你 JSON.stringify 你的 dataObject 时发送它;我相信 jQuery 可以解决这个问题。
-
@dawsonc623 结果是一样的。收到错误的请求错误。
-
可能应该先问这个问题,但是您的控制器是否受到攻击?
-
@dawsonc623 是的。如果我发送一个常规字符串控制器也会显示它。
-
@Harry 你打开调试日志了吗?我认为这里正在发生更深层次的事情,在提交请求时查看是否产生了任何堆栈跟踪将非常有帮助。
标签: java jquery ajax spring spring-mvc