通过Ajax进行POST提交JSON类型的数据到SpringMVC Controller的方法

通过Ajax进行POST提交JSON类型的数据到SpringMVC Controller的方法,第1张

概述现在在做的项目用到了SpringMVC框架,需要从前端angular接收请求的JSON数据,为了测试方便,所以直接先用AJAX进行测试,不过刚开始用平时用的ajax方法提交请求会出现415或者400错误,经过研究,终于可以了,现在做个总结。 js代码: function postSimpleData() { $.ajax({ type:

现在在做的项目用到了SpringMVC框架,需要从前端angular接收请求的JsON数据,为了测试方便,所以直接先用AJAX进行测试,不过刚开始用平时用的AJAX方法,提交请求会出现415或者400错误,经过研究,终于可以了,现在做个总结。

Js代码:

                                        function postsimpleData() {                                                  $.AJAX({                                                  type:       "POST",                                            url:       "Service/SimpleData",                                            ContentType:       "application/Json",//必须有                                                  dataType:       "Json",//表示返回值类型,不必须                                                  data:       JsON.stringify({       ‘foo‘:       ‘foovalue‘,‘bar‘:       ‘barvalue‘ }),//相当于 //data: "{‘str1‘:‘foovalue‘,‘str2‘:‘barvalue‘}",                                                  success:       function (JsonResult) {                                                  alert(JsonResult);                                                  }                                                  });                                                  }                                                  function login(){                                                  $.AJAX({                                                  url:       "Service/login",                                            type:       "POST",                                            ContentType:       "application/Json",                                            dataType:       "Json",                                            data:       JsON.stringify({                                                  MachineIP:       "127.0.0.1",                                            AppTag:       "4",                                            RequestInfo:{                                                  StaffCode:       "",                                            Password:       "",                                            StaffCard:       "01411"                                                  },                                            }),                                            async:       true,                                            success:       function(data) {                                                  var ss =       JsON.stringify(data);                                                  $(       "#result").val(ss);                                                  console.log(ss);                                                  }                                                  });                                                  }                                                  function postemployees() {                                                  $.AJAX({                                                  type:       "POST",                                            url:       "Service/Employees",                                            ContentType:       "application/Json",                                            dataType:       "Json",                                            data:       JsON.stringify({       "Employees": [                                                  {       "firstname":       "Bill","lastname":       "Gates" },                                            {       "firstname":       "George","lastname":       "Bush" },                                            {       "firstname":       "Thomas","lastname":       "Carter" }                                                  ]                                                                                             }),                                            success:       function (JsonResult) {                                                  alert(JsonResult);                                                  }                                                  });                                                  }              

JAVA  Controller代码:

                                        @RequestMapPing(value =       "/SimpleData",method = RequestMethod.POST)                                                  @ResponseBody                                                  public ActionResult SimpleData(string foo,string bar) {                                                  return Json(       "SimpleData",JsonRequestBehavior.AllowGet);                                                  }                                                                                             @RequestMapPing(value =       "/login",method = RequestMethod.POST)                                                  @ResponseBody                                                  public ResponseProtocolMap login(@Requestbody JsONObject requestJson,httpServletRequest request) {                                                  ResponseProtocolMap responseProtocolMap =       null;                                                  String machineIP = RequestJsonUtils.getMachineIP(requestJson);                                                  String appTag = RequestJsonUtils.getAppTag(requestJson);                                                  JsONObject requestInfo = RequestJsonUtils.getRequestInfo(requestJson);                                                  if (requestInfo ==       null) {                                                  responseProtocolMap =       new ResponseProtocolMap(       "-1","参数错误");                                                  }       else {                                                  String staffCode = RequestJsonUtils.getValueByKey(requestInfo,"StaffCode");                                                  String password = RequestJsonUtils.getValueByKey(requestInfo,"Password");                                                  String staffCard = RequestJsonUtils.getValueByKey(requestInfo,"StaffCard");                                                  responseProtocolMap = sysLoginService.login(staffCode,password,staffCard,appTag,request);                                                  }                                                  return responseProtocolMap;                                                  }                                                                                             @RequestMapPing(value =       "/Employees",method = RequestMethod.POST)                                                  @ResponseBody                                                  public ActionResult Employees(List<Employee> Employees) {                                                  return Json(       "Employees",JsonRequestBehavior.AllowGet);                                                  }              

                                        public       class Employee{                                                  public string Firstname { get; set; }                                                  public string Lastname { get; set; }                                                  }              

值得注意的有2点:

1)AJAX 选项中

    ContentType: "application/Json"

 这一条必须写,表明request的数据类型是Json。

    dataType: "Json"

这一条表示返回值的类型,不是必须的,且依据返回值类型而定。

2)选项中

    data: JsON.stringify({ ‘foo‘: ‘foovalue‘,‘bar‘: ‘barvalue‘ })

 很多时候我们将数据写作:

    { ‘foo‘: ‘foovalue‘,‘bar‘: ‘barvalue‘ }

这样会导致错误,因为Js会默认将这个Json对象放到表单数据中,故而导致controller接收不到。

有两种办法处理:第一种方式是用JsON.stringify()函数,其中JsON被Ecmascript5定义为全局对象。

第二种方式是直接用双引号包裹起来,比如data: "{‘str1‘:‘foovalue‘,‘str2‘:‘barvalue‘}"。

总结

以上是内存溢出为你收集整理的通过Ajax进行POST提交JSON类型的数据到SpringMVC Controller的方法全部内容,希望文章能够帮你解决通过Ajax进行POST提交JSON类型的数据到SpringMVC Controller的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1217691.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存