zoukankan      html  css  js  c++  java
  • angularjs的post请求参数的转换,使之跟ajax一样参数供springMVC使用

    一般情况下,angularjs的post格式是(我的模板):
    angularjs的请求方式是:
    1. Content-Type: application/json
    这样传过去的数据是这样子的:如传递一个数组:图中targetArr是数组
     真正的格式是json格式啊,springMVC不好接收的:
     展开来是这样的,总之就是springMVC的@RequestParam所不能接受的类型:
    这种情况下,先说说正常可以行得通,不用在js转换格式的方式:用springMVC的@RequestBody去接受json数据,但是前提是,你得有一个javaBean的文件。例如,对应的数组,写成:
    然后就可以接收了,一般接收常用的数据库class还是没问题的,比如一个User对象
    但是,如果我要传进任何的阿猫阿狗不常用的数据呢,是不是都要这样为它们创立class类??
    为了解决这个问题,还是应该转为像jquery那样的ajax传参,然后@requestParam也好用。
    ajax的传参方式是这样的:
    1. Content-Type=“application/x-www-form-urlencoded"
    然后一个数组的具体应该是这样的:
     
    如果是一个对象,应该是这样的:


    综上:应该在angularjs中怎么转换呢?网上查找了很多资料,没几个人说得清的,这里 牢骚一下,那些人有没有分享精神的呢?
    以下这段代码是参考网上的,因为网上复制来复制去,具体也不知道原来的人是谁,感谢他吧。把他的代码拿过来修改一下下。app.config便是转换。加上在js文件便是。
    1. var app = angular.module("MyApp", []);
    2. app.config(function ($httpProvider) {
    3. $httpProvider.defaults.headers.put['Content-Type'] = 'application/x-www-form-urlencoded';
    4. $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
    5. // Override $http service's default transformRequest
    6. $httpProvider.defaults.transformRequest = [function (data) {
    7. /**
    8. * The workhorse; converts an object to x-www-form-urlencoded serialization.
    9. * @param {Object} obj
    10. * @return {String}
    11. */
    12. var param = function (obj) {
    13. var query = '';
    14. var name, value, fullSubName, subName, subValue, innerObj, i;
    15. for (name in obj) {
    16. value = obj[name];
    17. if (value instanceof Array) {
    18. for (i = 0; i < value.length; ++i) {
    19. subValue = value[i];
    20. fullSubName = name + '[]';
    21. innerObj = {};
    22. innerObj[fullSubName] = subValue;
    23. query += param(innerObj) + '&';
    24. }
    25. } else if (value instanceof Object) {
    26. for (subName in value) {
    27. subValue = value[subName];
    28. fullSubName = subName;
    29. innerObj = {};
    30. innerObj[fullSubName] = subValue;
    31. query += param(innerObj) + '&';
    32. }
    33. } else if (value !== undefined && value !== null) {
    34. query += encodeURIComponent(name) + '='
    35. + encodeURIComponent(value) + '&';
    36. }
    37. }
    38. return query.length ? query.substr(0, query.length - 1) : query;
    39. };
    40. return angular.isObject(data) && String(data) !== '[object File]'
    41. ? param(data)
    42. : data;
    43. }];
    44. });

    好了,有了上面的那一段,就把angularjs的post,get请求传参当jquery的那个方法进行吧。
    这是js的angular的一个函数:传参的:
    然后,在springMVC端接收:
     好了,在这里获取了,该干嘛就干嘛!!
     


     



     




  • 相关阅读:
    Maven POM 元素参考表
    Hibernate MySql 连接池隔天断开解决方法
    html页面乱码问题
    Maven常用插件列表
    cygwin下使用vi
    干掉已打开的端口(如:停止8080端口)
    将Maven的Web Project部署到Tomcat
    [转]利用FtpClient类实现文件的上传下载功能
    关于生成GUID
    FinalShell 离线激活工具
  • 原文地址:https://www.cnblogs.com/share2015/p/5419748.html
Copyright © 2011-2022 走看看