2015-05-18 2 views
1

Следующие данные формы сообщения постсонализации как json, а не пара значений ключа.

сервис

  $resource(apiPath, { 
       Id: '@Id', 
       apt_id: user_info.apt_id, 
       mauth_token: user_info.mauth_token, 
       mauth_account_id: user_info.mauth_acnt_id, 
       rest: 1, 
      }, { 
       save:{ 
        method:'POST', 
        headers : {'Content-Type': 'application/x-www-form-urlencoded'} 
       } 
      }); 

контроллер

.controller('BroadcastSmsSendCtrl', function($scope, $ionicLoading, $ionicActionSheet, $state, $timeout, $location, BroadcastSmsSvcs, GetUserCountHttpSvcs) { 
      $scope.entry = new BroadcastSmsSvcs(); 

      $scope.doSubmit = function() { 
       BroadcastSmsSvcs.save({}, $scope.entry); 
      }; 
     }); 

Form data

ответ

3

Добавьте следующее в вашей .config() функции

$httpProvider.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded"; 
$httpProvider.defaults.transformRequest.unshift(function (data, headersGetter) { 
    var key, result = [], response; 
    if(typeof data == "string") { //$http support 
      response = data; 
    } else { 
      for (key in data) { 
       if (data.hasOwnProperty(key)) { 
        result.push(encodeURIComponent(key) + "=" + encodeURIComponent(data[key])); 
       } 
      } 
      response = result.join("&"); 
     } 
     return response; 
}); 
3

попробуйте добавить это к вашему $ объект ресурса

headers : {'Content-Type': 'application/x-www-form-urlencoded'}, 
transformRequest : function(obj){ 
     var str = []; 
     for(var p in obj) 
     str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); 
     return str.join("&"); 
    } 
    } 
12

AngularJs предоставляет услугу, которая преобразует в JQuery как объект сериализации.

Вместо JSon сериализации: {"id": 1, "name": "whatever"}

становится: id=1&name=whatever

Так просто вы можете сделать:

save:{ 
    method: "POST", 
    headers : {"Content-Type": "application/x-www-form-urlencoded"}, 
    transformRequest: function(data) { 
     return $httpParamSerializerJQLike(data); 
    } 
} 

Примечания: В вашей службе вы должны вводить $httpParamSerializerJQLike службы

Смежные вопросы