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端接收:
 好了,在這里獲取了,該干嘛就干嘛!!
 


 



 





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM