默认contenType下

在ajax中不写contentType的情况下

contentType:"application/x-www-form-urlencoded;charset=UTF-8" (默认)

总结以下例证:

当ajax为默认的application/x-www-form-urlencoded时,能够处理简单的JSON(单层),遇到复杂的嵌套JSON的情况就不能处理了(含数组情况);

这种情况下要处理嵌套JSON的内容,必须将其转化成传统的key=value的形式后放入ajax的data中。

相对而言,在简单的JSON情况下,后台的controller中直接在方法上写形参即可,亦可用vo对象接收;而在复杂参数的情况下,必须使用vo对象来进行值接收,再写在形参上是行不通的。

1.当为简单JSON时

以下传输的json中4个字段都为字符串

ajax

  1. // 例如:
  2. // -----------------right-begin-----------------
  3. var history = 'aaa';
  4. var professionScale = 'bbb';
  5. var constructionScale = 'ccc';
  6. var award = 'ddd';
  7. $.ajax({
  8. url:"/api/admin/about-JK/edit-JK-text",
  9. type: "POST",
  10. // 期待服务器返回的类型:json、jsonp、text ... 此参数加上最好
  11. dataType: "json",
  12. data: {
  13. "history": history,
  14. "professionScale": professionScale,
  15. "constructionScale": constructionScale,
  16. "award": award},
  17. success: function (res) {
  18. if (res.code == 0) {
  19. console.log(res);
  20. } else {
  21. console.log(res);
  22. }
  23. },
  24. error: function () {
  25. console.log('请求系统异常');
  26. }
  27. });
  28. // -----------------right-end-----------------

controller

  1. // -----------------right-begin-----------------
  2. // 以下1.2均可
  3. // 1.用单独的字段来接收
  4. @PostMapping("/api/admin/about-JK/edit-JK-text")
  5. // 顺便补充,如果前台json传过来的名称中有和参数名称不对应的情况
  6. // 例如:profession_scale,只需要在参数前加
  7. // @RequestParam("profession_scale") String professionScale
  8. // 但是只能是用单个参数接收的时候可以用,但是如果是vo对象接收,就没有办法了!
  9. // 还是只能修改ajax中data的key
  10. public JsonData editAboutJKTextAdmin(
  11. String history, String professionScale,String constructionScale,
  12. String award) {
  13. JsonData json = aboutJKService.editAboutJKText(aboutJKVo);
  14. return json;
  15. }
  16. // 2.用vo对象来接受
  17. @PostMapping("/api/admin/about-JK/edit-JK-text")
  18. public JsonData editAboutJKTextAdmin(AboutJKVo aboutJKVo) {
  19. JsonData json = aboutJKService.editAboutJKText(aboutJKVo);
  20. return json;
  21. }
  22. // -----------------right-end-----------------

vo

  1. // -----------------right-begin-----------------
  2. @Data //lombok
  3. @AllArgsConstructor //lombok
  4. @NoArgsConstructor //lombok
  5. public class AboutJKVo implements Serializable {
  6. private String history;
  7. private String professionScale;
  8. private String constructionScale;
  9. private String award;
  10. }
  11. // -----------------right-end-----------------

2.当为复杂JSON的时候

意为多重嵌套的JSON,最典型的即含有数组的JSON

ajax

  1. // 1.
  2. // ------------------- error-begin -------------------
  3. // 服务器直接 500
  4. var carouselLink = new Array();
  5. carouselLink.push('1.jpg');
  6. carouselLink.push('2.jpg');
  7. carouselLink.push('3.jpg');
  8. var history = 'aaa';
  9. var professionScale = 'bbb';
  10. var constructionScale = 'ccc';
  11. var award = 'ddd';
  12. $.ajax({
  13. url:"/api/admin/about-JK/edit-JK-text",
  14. type: "POST",
  15. // 期待服务器返回的类型:json、jsonp、text ... 此参数加上最好
  16. dataType: "json",
  17. data: {
  18. "carouselLink": carouselLink,
  19. "history": history,
  20. "professionScale": professionScale,
  21. "constructionScale": constructionScale,
  22. "award": award},
  23. success: function (res) {
  24. if (res.code == 0) {
  25. console.log(res);
  26. } else {
  27. console.log(res);
  28. }
  29. },
  30. error: function () {
  31. console.log('请求系统异常');
  32. }
  33. });
  34. // ------------------- error-end -------------------
  35. // 如果还要使用默认contentType为application/x-www-form-urlencoded;charset=UTF-8
  36. // 以上的ajax已经行不通了!
  37. // 那应该怎么写?
  38. // 使用application/x-www-form-urlencoded兼容度最高的key=value形式
  39. // 2.
  40. // ------------------- right-begin -------------------
  41. var carouselLink = new Array();
  42. carouselLink.push('1.jpg');
  43. carouselLink.push('2.jpg');
  44. carouselLink.push('3.jpg');
  45. var history = 'aaa';
  46. var professionScale = 'bbb';
  47. var constructionScale = 'ccc';
  48. var award = 'ddd';
  49. $.ajax({
  50. url:"/api/admin/about-JK/edit-JK-text",
  51. type: "POST",
  52. // 期待服务器返回的类型:json、jsonp、text ... 此参数加上最好
  53. dataType: "json",
  54. data:
  55. "carouselLink="+carouselLink+"&history=" + history+
  56. "&professionScale="+ professionScale +
  57. "&constructionScale="+ constructionScale +"&award=" + award,
  58. dataType: "json",
  59. success: function (res) {
  60. if (res.code == 0) {
  61. console.log(res);
  62. } else {
  63. console.log(res);
  64. }
  65. },
  66. error: function () {
  67. console.log('请求系统异常');
  68. }
  69. });
  70. // ------------------- right-end -------------------

controller

  1. // 3.
  2. // ------------------- error-begin -------------------
  3. // 1.用单独的字段来接收
  4. // 服务器也是直接 500
  5. @PostMapping("/api/admin/about-JK/edit-JK-text")
  6. public JsonData editAboutJKTextAdmin(
  7. List<String> carouselLink,
  8. String history, String professionScale,String constructionScale,
  9. String award) {
  10. System.out.println(carouselLink + history +
  11. professionScale + constructionScale + award);
  12. return null;
  13. }
  14. // ------------------- error-end -------------------
  15. // 当key=value中有了list之后,controller内便不能直接用参数接收了!
  16. // 只能通过vo对象来接收
  17. // 4.
  18. // -----------------right-begin-----------------
  19. // 2.用vo对象来接受
  20. @PostMapping("/api/admin/about-JK/edit-JK-text")
  21. public JsonData editAboutJKTextAdmin(AboutJKVo aboutJKVo) {
  22. System.out.println(aboutJKVo);
  23. return null;
  24. }
  25. // -----------------right-end-----------------

vo

  1. // -----------------right-begin-----------------
  2. @Data
  3. @AllArgsConstructor
  4. @NoArgsConstructor
  5. public class AboutJKVo implements Serializable {
  6. private List<String> carouselLink;
  7. private String history;
  8. private String professionScale;
  9. private String constructionScale;
  10. private String award;
  11. }
  12. // -----------------right-end-----------------

结果

1 和 3 组合 500 NoSuchMethodException

1 和 4 组合 500 java.lang.NumberFormatException: For input string: ""

2 和 3 组合 500 NoSuchMethodException

2 和 4 组合 success!

contentType为application/json时

在ajax中声明 contentType的类型:

contentType: "application/json"

总结以下例证

1.当ajax声明contentType: "application/json"之后,与之对应,不能再像默认contentType为application/x-www-form-urlencoded的时候一样,直接传递json对象了,必须传递json字符串!

通过JSON.stringify() 去将json对象转化成json字符串。

2.与之对应,controller需要注意的是:

  • controller中,跟在@RequestBody后的参数,和ajax传递过来的json字符串,必须是严格的json层级对应情况!

    • 情况一:假如ajax传输的json字符串为'[1, 2, 3]' 与之对应,controller的形参中,就必须有一个List<Integer> list 去接收它。

    • 情况二:假如ajax传输的json字符串为'{"names":["aaa", "bbb", "ccc"]}',那么controller的形参中,就必须是一个vo对象,并且对象中有一个叫做names的List<String>。

    • 总:只要外部有{},则controller应该用vo对象接收,直接是'aaa'字符串,或者['aaa', 'bbb']数组,则必须用一个对应的String 类型,或者List<string>类型来接收。

  • @RequestBody在一个controller层方法中,只能出现一次。

    • 如果一个方法形参中出现多个@RequestBody,将会注入失败。
    • 如果只有一个String类型的参数,但是ajax传输过来的是一个复杂json,那么这个复杂json将以字符串的形式被全部注入到那个String类型的参数中,这是一种极端情况。

3.补充,建议:可能是jquery的版本问题,在我原来使用3.x版本的jquery时,出现过复杂json无法注入vo对象的情况,原因是jquery默认会调用jQuery.param深度序列化参数,以适应如PHP和Ruby on Rails框架,但servelt api无法处理。但这里我使用的jquery-2.1.1并未出现此状况。

但稳妥起见,建议在ajax中加上参数traditional:true,来保障json的解析正常!

1.restful风格下传递复杂json

ajax

  1. // 1.
  2. // ------------------- error-begin -------------------
  3. var carouselLink = new Array();
  4. carouselLink.push('1.jpg');
  5. carouselLink.push('2.jpg');
  6. carouselLink.push('3.jpg');
  7. var history = 'aaa';
  8. var professionScale = 'bbb';
  9. var constructionScale = 'ccc';
  10. var award = 'ddd';
  11. $.ajax({
  12. url:"/api/admin/about-JK/edit-JK-text",
  13. contentType:'application/json',
  14. type: "POST",
  15. // 期待服务器返回的类型:json、jsonp、text ... 此参数加上最好
  16. dataType: "json",
  17. data:{
  18. "carouselLink": carouselLink,
  19. "history": history,
  20. "professionScale": professionScale,
  21. "constructionScale": constructionScale,
  22. "award": award},
  23. dataType: "json",
  24. success: function (res) {
  25. if (res.code == 0) {
  26. console.log(res);
  27. } else {
  28. console.log(res);
  29. }
  30. },
  31. error: function () {
  32. console.log('请求系统异常');
  33. }
  34. });
  35. // ------------------- right-end -------------------
  36. // 2.
  37. // -----------------right-begin-----------------
  38. var carouselLink = new Array();
  39. carouselLink.push('1.jpg');
  40. carouselLink.push('2.jpg');
  41. carouselLink.push('3.jpg');
  42. var history = 'aaa';
  43. var professionScale = 'bbb';
  44. var constructionScale = 'ccc';
  45. var award = 'ddd';
  46. var dataJSON = {
  47. "carouselLink": carouselLink,
  48. "history": history,
  49. "professionScale": professionScale,
  50. "constructionScale": constructionScale,
  51. "award": award}
  52. var dataJSONStr = JSON.stringify(dataJSON);
  53. console.log(dataJSON)
  54. console.log(dataJSONStr)
  55. $.ajax({
  56. url:"/api/admin/about-JK/edit-JK-text",
  57. contentType:'application/json',
  58. type: "POST",
  59. data: dataJSONStr,
  60. // 期待服务器返回的类型:json、jsonp、text ... 此参数加上最好
  61. dataType: "json",
  62. success: function (res) {
  63. if (res.code == 0) {
  64. console.log(res);
  65. } else {
  66. console.log(res);
  67. }
  68. },
  69. error: function () {
  70. console.log('请求系统异常');
  71. }
  72. });
  73. // -----------------right-end-----------------

controller

  1. // 3.
  2. // ------------------- error-begin -------------------
  3. @PostMapping("/api/admin/about-JK/edit-JK-text")
  4. public JsonData editAboutJKTextAdmin(List<String> carouselLink, String history,
  5. String professionScale, String constructionScale,
  6. String award) {
  7. System.out.println(carouselLink +
  8. history +
  9. professionScale +
  10. constructionScale + award);
  11. return null;
  12. }
  13. // ------------------- error-end -------------------
  14. // 4.
  15. // ------------------- error-begin -------------------
  16. @PostMapping("/api/admin/about-JK/edit-JK-text")
  17. public JsonData editAboutJKTextAdmin(@RequestBody List<String> carouselLink,
  18. @RequestBody String history,
  19. @RequestBody String professionScale,
  20. @RequestBody String constructionScale,
  21. @RequestBody String award) {
  22. System.out.println(carouselLink +
  23. history +
  24. professionScale +
  25. constructionScale + award);
  26. return null;
  27. }
  28. // ------------------- error-end -------------------
  29. // 5.
  30. // ------------------- error-begin -------------------
  31. @PostMapping("/api/admin/about-JK/edit-JK-text")
  32. public JsonData editAboutJKTextAdmin(AboutJKVo aboutJKVo) {
  33. System.out.println(aboutJKVo);
  34. return null;
  35. }
  36. // ------------------- error-end -------------------
  37. // 6.
  38. // -----------------right-begin-----------------
  39. @PostMapping("/api/admin/about-JK/edit-JK-text")
  40. public JsonData editAboutJKTextAdmin(@RequestBody AboutJKVo aboutJKVo) {
  41. System.out.println(aboutJKVo);
  42. return null;
  43. }
  44. // -----------------right-end-----------------

vo

  1. // -----------------right-begin-----------------
  2. @Data
  3. @AllArgsConstructor
  4. @NoArgsConstructor
  5. public class AboutJKVo implements Serializable {
  6. private List<String> carouselLink;
  7. private String history;
  8. private String professionScale;
  9. private String constructionScale;
  10. private String award;
  11. }
  12. // -----------------right-end-----------------

结果

1 和 3 组合 500 NoSuchMethodException

1 和 4 组合 400 JSON parse error: Unrecognized token 'carouselLink'

1 和 5 组合 无报错,但

  1. AboutJKVo(carouselLink=null, history=null, professionScale=null, constructionScale=null, award=null)

1 和 6 组合 400 badRequest!

2 和 3 组合 500 NoSuchMethodException

2 和 4 组合 400 JSON parse error

2 和 5 组合 无报错,但

  1. AboutJKVo(carouselLink=null, history=null, professionScale=null, constructionScale=null, award=null)

2 和 6 组合 success!

2.restful风格下传递简单json

ajax

  1. // 1.
  2. // ------------------- error-begin -------------------
  3. var history = 'aaa';
  4. var professionScale = 'bbb';
  5. var constructionScale = 'ccc';
  6. var award = 'ddd';
  7. $.ajax({
  8. url:"/api/admin/about-JK/edit-JK-text",
  9. contentType:'application/json',
  10. type: "POST",
  11. // 期待服务器返回的类型:json、jsonp、text ... 此参数加上最好
  12. dataType: "json",
  13. data:{
  14. "history": history,
  15. "professionScale": professionScale,
  16. "constructionScale": constructionScale,
  17. "award": award},
  18. dataType: "json",
  19. success: function (res) {
  20. if (res.code == 0) {
  21. console.log(res);
  22. } else {
  23. console.log(res);
  24. }
  25. },
  26. error: function () {
  27. console.log('请求系统异常');
  28. }
  29. });
  30. // ------------------- error-end -------------------
  31. // 2.
  32. // -----------------right-begin-----------------
  33. var history = 'aaa';
  34. var professionScale = 'bbb';
  35. var constructionScale = 'ccc';
  36. var award = 'ddd';
  37. var dataJSON = {
  38. "history": history,
  39. "professionScale": professionScale,
  40. "constructionScale": constructionScale,
  41. "award": award}
  42. var dataJSONStr = JSON.stringify(dataJSON);
  43. console.log(dataJSON)
  44. console.log(dataJSONStr)
  45. $.ajax({
  46. url:"/api/admin/about-JK/edit-JK-text",
  47. contentType:'application/json',
  48. type: "POST",
  49. data: dataJSONStr,
  50. // 期待服务器返回的类型:json、jsonp、text ... 此参数加上最好
  51. dataType: "json",
  52. success: function (res) {
  53. if (res.code == 0) {
  54. console.log(res);
  55. } else {
  56. console.log(res);
  57. }
  58. },
  59. error: function () {
  60. console.log('请求系统异常');
  61. }
  62. });
  63. // -----------------right-end-----------------

controller

  1. // 3.
  2. // ------------------- error-begin -------------------
  3. @PostMapping("/api/admin/about-JK/edit-JK-text")
  4. public JsonData editAboutJKTextAdmin(String history, String professionScale,
  5. String constructionScale,
  6. String award) {
  7. System.out.println(history +
  8. professionScale +
  9. constructionScale + award);
  10. return null;
  11. }
  12. // ------------------- error-end -------------------
  13. // 4.
  14. // ------------------- error-begin -------------------
  15. @PostMapping("/api/admin/about-JK/edit-JK-text")
  16. public JsonData editAboutJKTextAdmin(@RequestBody String history,
  17. @RequestBody String professionScale,
  18. @RequestBody String constructionScale,
  19. @RequestBody String award) {
  20. System.out.println(history +
  21. professionScale +
  22. constructionScale + award);
  23. return null;
  24. }
  25. // ------------------- error-end -------------------
  26. // 5.
  27. // ------------------- error-begin -------------------
  28. @PostMapping("/api/admin/about-JK/edit-JK-text")
  29. public JsonData editAboutJKTextAdmin(AboutJKVo aboutJKVo) {
  30. System.out.println(aboutJKVo);
  31. return null;
  32. }
  33. // ------------------- error-end -------------------
  34. // 6.
  35. // -----------------right-begin-----------------
  36. @PostMapping("/api/admin/about-JK/edit-JK-text")
  37. public JsonData editAboutJKTextAdmin(@RequestBody AboutJKVo aboutJKVo) {
  38. System.out.println(aboutJKVo);
  39. return null;
  40. }
  41. // -----------------right-end-----------------

vo

  1. // -----------------right-begin-----------------
  2. @Data
  3. @AllArgsConstructor
  4. @NoArgsConstructor
  5. public class AboutJKVo implements Serializable {
  6. private String history;
  7. private String professionScale;
  8. private String constructionScale;
  9. private String award;
  10. }
  11. // -----------------right-end-----------------

结果

1 和 3 组合 无报错,但 4个参数全为null

1 和 4 组合 400 badRequest @RequestBody需要的参数无法注入

1 和 5 组合 无报错,但 4个参数全为null

1 和 6 组合 JSON parse error

2 和 3 组合 无报错,但4个参数全为null

2 和 4 组合 400 badRequest @RequestBody需要的参数无法注入

2 和 5 组合 无报错,但 4个参数全为null

2 和 6 组合 success!

3.restful风格下传递list

ajax

  1. // 1.
  2. var list = new Array();
  3. list.push('1.jpg');
  4. list.push('2.jpg');
  5. list.push('3.jpg');
  6. $.ajax({
  7. url:"/api/admin/about-JK/edit-JK-text",
  8. contentType:'application/json',
  9. type: "POST",
  10. // 期待服务器返回的类型:json、jsonp、text ... 此参数加上最好
  11. dataType: "json",
  12. data:list,
  13. dataType: "json",
  14. success: function (res) {
  15. if (res.code == 0) {
  16. console.log(res);
  17. } else {
  18. console.log(res);
  19. }
  20. },
  21. error: function () {
  22. console.log('请求系统异常');
  23. }
  24. });
  25. // 2.
  26. var list = new Array();
  27. list.push('1.jpg');
  28. list.push('2.jpg');
  29. list.push('3.jpg');
  30. $.ajax({
  31. url:"/api/admin/about-JK/edit-JK-text",
  32. contentType:'application/json',
  33. type: "POST",
  34. // 期待服务器返回的类型:json、jsonp、text ... 此参数加上最好
  35. dataType: "json",
  36. data:{'list':list},
  37. dataType: "json",
  38. success: function (res) {
  39. if (res.code == 0) {
  40. console.log(res);
  41. } else {
  42. console.log(res);
  43. }
  44. },
  45. error: function () {
  46. console.log('请求系统异常');
  47. }
  48. });
  49. // 2.+
  50. var list = new Array();
  51. list.push('1.jpg');
  52. list.push('2.jpg');
  53. list.push('3.jpg');
  54. var dataJSON = {'list':list}
  55. var dataJSONStr = JSON.stringify(dataJSON);
  56. $.ajax({
  57. url:"/api/admin/about-JK/edit-JK-text",
  58. contentType:'application/json',
  59. type: "POST",
  60. // 期待服务器返回的类型:json、jsonp、text ... 此参数加上最好
  61. dataType: "json",
  62. data: dataJSONStr,
  63. dataType: "json",
  64. success: function (res) {
  65. if (res.code == 0) {
  66. console.log(res);
  67. } else {
  68. console.log(res);
  69. }
  70. },
  71. error: function () {
  72. console.log('请求系统异常');
  73. }
  74. });
  75. // 3.
  76. var carouselLink = new Array();
  77. carouselLink.push('1.jpg');
  78. carouselLink.push('2.jpg');
  79. carouselLink.push('3.jpg');
  80. var list = JSON.stringify(carouselLink);
  81. $.ajax({
  82. url:"/api/admin/about-JK/edit-JK-text",
  83. contentType:'application/json',
  84. type: "POST",
  85. // 期待服务器返回的类型:json、jsonp、text ... 此参数加上最好
  86. dataType: "json",
  87. data:list,
  88. dataType: "json",
  89. success: function (res) {
  90. if (res.code == 0) {
  91. console.log(res);
  92. } else {
  93. console.log(res);
  94. }
  95. },
  96. error: function () {
  97. console.log('请求系统异常');
  98. }
  99. });

controller

  1. // 4.
  2. @PostMapping("/api/admin/about-JK/edit-JK-text")
  3. public JsonData editAboutJKTextAdmin(List<String> list) {
  4. System.out.println(list);
  5. return null;
  6. }
  7. // 5.
  8. @PostMapping("/api/admin/about-JK/edit-JK-text")
  9. public JsonData editAboutJKTextAdmin(@RequestBody List<String> list) {
  10. System.out.println(list);
  11. return null;
  12. }
  13. // 6.
  14. @PostMapping("/api/admin/about-JK/edit-JK-text")
  15. public JsonData editAboutJKTextAdmin(AboutJKVo aboutJKVo) {
  16. System.out.println(aboutJKVo);
  17. return null;
  18. }
  19. // 7.
  20. @PostMapping("/api/admin/about-JK/edit-JK-text")
  21. public JsonData editAboutJKTextAdmin(@RequestBody AboutJKVo aboutJKVo) {
  22. System.out.println(aboutJKVo);
  23. return null;
  24. }

vo

  1. @Data
  2. @AllArgsConstructor
  3. @NoArgsConstructor
  4. public class AboutJKVo implements Serializable {
  5. private List<String> list;
  6. }

结果

1 和 4 500 NoSuchMethodException

1 和 5 400 JSON parse error

1 和 6 无报错,但为null

1 和 7 400 JSON parse error

2 和 4 500 NoSuchMethodException

2 和 5 400 JSON parse error

2 和 6 无报错,但为null

2 和 7 400 JSON parse error

3 和 4 500 NoSuchMethodException

3 和 5 success!

3 和 6 无报错,但为null

3 和 7 400 JSON parse error

2+ 和 4 500 NoSuchMethodException

2+ 和 5 400 JSON parse error

2+ 和 6 无报错,但为null

2+ 和 7 success!

4.restful下传递单参

ajax

  1. // 1.
  2. var professionScale = 'aaa'
  3. $.ajax({
  4. url:"/api/admin/about-JK/edit-JK-text",
  5. contentType:'application/json',
  6. type: "POST",
  7. // 期待服务器返回的类型:json、jsonp、text ... 此参数加上最好
  8. dataType: "json",
  9. data: professionScale,
  10. dataType: "json",
  11. success: function (res) {
  12. if (res.code == 0) {
  13. console.log(res);
  14. } else {
  15. console.log(res);
  16. }
  17. },
  18. error: function () {
  19. console.log('请求系统异常');
  20. }
  21. });
  22. // 2.
  23. var professionScale = 'aaa'
  24. $.ajax({
  25. url:"/api/admin/about-JK/edit-JK-text",
  26. contentType:'application/json',
  27. type: "POST",
  28. // 期待服务器返回的类型:json、jsonp、text ... 此参数加上最好
  29. dataType: "json",
  30. data:{'professionScale':professionScale},
  31. dataType: "json",
  32. success: function (res) {
  33. if (res.code == 0) {
  34. console.log(res);
  35. } else {
  36. console.log(res);
  37. }
  38. },
  39. error: function () {
  40. console.log('请求系统异常');
  41. }
  42. });
  43. // 3.
  44. var professionScale = 'aaa'
  45. var dataJSON = {'professionScale':professionScale}
  46. var dataJSONStr = JSON.stringify(dataJSON);
  47. $.ajax({
  48. url:"/api/admin/about-JK/edit-JK-text",
  49. contentType:'application/json',
  50. type: "POST",
  51. // 期待服务器返回的类型:json、jsonp、text ... 此参数加上最好
  52. dataType: "json",
  53. data: dataJSONStr,
  54. dataType: "json",
  55. success: function (res) {
  56. if (res.code == 0) {
  57. console.log(res);
  58. } else {
  59. console.log(res);
  60. }
  61. },
  62. error: function () {
  63. console.log('请求系统异常');
  64. }
  65. });

controller

  1. // 4.
  2. @PostMapping("/api/admin/about-JK/edit-JK-text")
  3. public JsonData editAboutJKTextAdmin(String professionScale) {
  4. System.out.println(professionScale);
  5. return null;
  6. }
  7. // 5.
  8. @PostMapping("/api/admin/about-JK/edit-JK-text")
  9. public JsonData editAboutJKTextAdmin(@RequestBody String professionScale) {
  10. System.out.println(professionScale);
  11. return null;
  12. }
  13. // 6.
  14. @PostMapping("/api/admin/about-JK/edit-JK-text")
  15. public JsonData editAboutJKTextAdmin(AboutJKVo aboutJKVo) {
  16. System.out.println(aboutJKVo);
  17. return null;
  18. }
  19. // 7.
  20. @PostMapping("/api/admin/about-JK/edit-JK-text")
  21. public JsonData editAboutJKTextAdmin(@RequestBody AboutJKVo aboutJKVo) {
  22. System.out.println(aboutJKVo);
  23. return null;
  24. }

vo

  1. @Data
  2. @AllArgsConstructor
  3. @NoArgsConstructor
  4. public class AboutJKVo implements Serializable {
  5. private String professionScale;
  6. }

结果

1 和 4 无报错,但为null

1 和 5 success!

1 和 6 无报错,但为null

1 和 7 JSON parse error: Unrecognized token 'aaa'

2 和 4 无报错,但为null

2 和 5 错误的值 professionScale = "professionScale=aaa"

2 和 6 无报错,但为null

2 和 7 JSON parse error: Unrecognized token 'professionScale'

3 和 4 无报错,但为null

3 和 5 错误的值 professionScale = "{"professionScale":"aaa"}"

3 和 6 无报错,但为null

3 和 7 success!

ajax前后台通信验错的更多相关文章

  1. flask+sqlite3+echarts2+ajax数据可视化报错:UnicodeDecodeError: 'utf8' codec can't decode byte解决方法

    flask+sqlite3+echarts2+ajax数据可视化报错: UnicodeDecodeError: 'utf8' codec can't decode byte 解决方法: 将 py文件和 ...

  2. ajax 异步 通信 小例子 servlet与 jsp异步 get

    get  请求参数通过 url那里写进去,然后send(null) html文件和 servlet进行通信 通过ajax 进行通信 <!DOCTYPE html PUBLIC "-// ...

  3. ajax jsonp请求报错not a function的解决方案

    概述 最近工作中使用ajax,有时会报json4 is not a function的错误,有时又不会报错.找了很久,网上说是因为多次请求同一个资源导致的,但是我检查了自己的代码,对于重复资源并没有重 ...

  4. 火狐浏览器调试ajax异步页面时报错NS_ERROR_UNEXPECTER

    第一个直观的结论就是ajax调用出错,如果其他浏览器却调用没报错,而且正常返回值了,那么就是Firefox浏览器的问题了: 如果其他浏览器也没余完全正常执行,而是出现和我上一篇ajax向后台请求数据, ...

  5. javascript使用web proxy来实现ajax cross-domain通信

    在现代浏览器中,都强加了对javacript代码的访问限制,比如一个页面的js无法向非同源的url实现ajax请求,获得数据.在这时,是浏览器端会报错: No 'Access-Control-Allo ...

  6. ajax 异步 通信 小例子 servlet与 jsp异步 post方法

    post请求 url后面加参数 接收不到的,必须 放到send("use"=user)形式 还要加上 xhr.setRequestHeader("Content-Type ...

  7. LigerUI用Post\Get\Ajax前后台交互方式的写法

    parms 参数统一 json格式的数据 url 访问后台的url 设置同步参数 [javascript] view plain copy   $.ajaxSetup({ async : false} ...

  8. ajax post 请求报错Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' heade

    jquery ajax跨域请求,webapi webconfig配置 前台代码(放了一部分) function CheckIn(roomno) { $.ajax({ url: 'https://www ...

  9. Websocket实现前后台通信,demo小测试

    新需求大概如下:用户登录系统,登录成功之后建立websocket连接,实现通信 总体思路:前端不是我负责,只是简单的做个功能,先实现登录,把用户标识存入HttpSeesion,再建立websocket ...

随机推荐

  1. final修饰符(5)-final方法

    final修饰的类的方法不能被重写,例如如果父类不希望子类重写某个方法,则可以使用final修饰符修饰该方法 在java的Object类里面有一个final方法:getClass(),因为Java不希 ...

  2. IDEA工具-自动导包去除星号(import xx.xx.*)

    打开设置>Editor>Code Style>Java>Scheme Default>Imports 设置导入类数值阈值,默认同包类是超过5个变成*,静态导入超过3个变成 ...

  3. sql server2016安装网址

    https://www.microsoft.com/zh-cn/download/details.aspx?id=54284 SQl server 2008 附加数据库失败如何解决: https:// ...

  4. c# checkedListBox设置多列横向显示 经验总结

    1. 设置checkedListBox的MultiColumn 属性为true; 2. 调整checkedListBox的宽度,调整ColumnWidth的宽度

  5. Guava - Set集合

    当我们在统计一个字符串中每个单词出现的次数时,通常的做法是分割字符串,遍历字符串,然后放到一个map里面,来进行统计,Guava中提供了类似功能的集合,Multiset String strWorld ...

  6. Vue框架主要内容学习总结

    Vue框架体系主要内容: 1. vue核心语法和用法: 2. vue-router--路由.路由相当于访问路径,将访问路径与vue组件映射起来.传统方式常采用超链接实现路径或页面之间的切换, 而在vu ...

  7. 【Linux服务器双IP配置】如何实现不同IP的双网卡同时上网?

    一.环境和知识预备 我遇到问题的生产机器是CentOS release 6.8系统,不过这并不影响问题的解决,本质上都是一样的. 网关:一个网络连接到另一个网络的关口,也就是实现网络互连,俗称网络连接 ...

  8. VS2013导入新项目时,连接数据库问题。

    用VS2013导入项目进行学习时,导入数据库会报数据库登陆不上的错误... 解决方法: 1.将其自带的数据库连接先删除,使用自己的sql server数据库将项目数据库先附加进去, 2.附加进去后,再 ...

  9. 定时任务quartz

      pom引入 <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>qua ...

  10. 解决iOS上网页滑动不流畅问题

    body { overflow:auto; /* 用于 android4+,或其他设备 */ -webkit-overflow-scrolling:touch; /* 用于 ios5+ */ }说明: ...