четверг, 23 ноября 2017 г.

Отправка пост запроса AngularJS

Недавно столкнулся с проблемой, что у меня не отправлялся пост запрос из приложения AngularJS. Был следующий код у меня:
var req = {
                    method: 'POST',
                    url: 'http://url',
                    headers: {
                        'Content-Type':  undefined
                    },
                    data: {test: 'test'}
                };
                $http(req).success(function(data) {
                   console.log(data); 
                });
 
Дело в том, что я только взялся за Angular и этот код впринципе взят из книги, мне сразу показалось странным, что content-type undefined. После замены content-type, все стало работать!

var req = {
                    method: 'POST',
                    url: 'http://url',
                    headers: {
                        'Content-Type':  'application/x-www-form-urlencoded'
                    },
                    data: {test: 'test'}
                };
                $http(req).success(function(data) {
                   console.log(data); 
                });
 
ХОТЯ НЕТ ПОСТОЙТЕ!!! Этого все-таки оказалось недостаточно, потому что приходит примерно вот такой post запрос

array(1) {
[1] => '{test:"test"}'
}
 
Который естественно не проходит валидацию в модели, поэтому нужно использовать вот такой код

var xsrf = {
                    name: $scope.name,
                    user_id: $scope.userid
                };
                $http({
                    method: 'POST',
                    url: 'http://url',
                    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("&");
                    },
                    data: xsrf
                }).success(function (data) {
                    console.log(data);
                }).error(function (data, status, headers, config) {
                    console.log("**** ERROR ****");
                    console.log(status);
                });
Ответ нашелся здесь

Комментариев нет:

Отправить комментарий

Рабочий способо убрать хрип микрофона в Ubuntu 18.04

Переходим по ссылке и делаем также как в видео https://www.reddit.com/r/Ubuntu/comments/6zq3ca/remove_background_noise_on_the_mic_in_ubun...