2013-09-23 4 views
0

Предостережение: Я разработчик интерфейса, у меня нет большого опыта работы с серверами.Выполнение запроса POST с угловым

Я создаю приложение с Angular 1.2, которое пингует API на другом подобласти. Бэкэнд-разработчик в проекте использует nginx и настроил его, чтобы разрешить междоменные запросы, по существу пересылая субдомен или что-то подобное, я полагаю. Я могу сделать запрос $http.get просто отлично, но когда я попробую $http.post, я получаю ошибку Access-Control-Allow-Origin.

Вот кикер: Я могу сделать тот же запрос с jQuery, и он работает отлично.

$.ajax({ 
    type: 'POST', 
    url: 'http://api.mydomain.com/v1/customer/', 
    data: theData, 
    contentType: 'application/x-www-form-urlencoded', 
    //contentType: 'text/plain', 
    //crossDomain: true, 
    success: function(){ 
     console.log("sent data via jquery"); 
    } 
}); 

Вот как я Угловая установить:

var myServices = angular.module("myServices", []); 

myServices.config(function($httpProvider) { 
    $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; 
}); 

И:

save: function(payload){ 
     console.dir($http); 
     return $http.post('http://api.mydomain.com/v1/customer/', payload).then(function(result){ 
      return result; 
     }); 
    }, 

Что мне не хватает?

+0

Похож на обмана: http://stackoverflow.com/questions/16661032/http-get-is-not-allowed-by-access-control-allow-origin-but-ajax-is – Jason

ответ

1

Довольно близко, я вижу, вы используете .then(), так что просто следовать возвратную обещание шаблона и забрать его в контроллере:

return $http.post('http://api.mydomain.com/v1/customer/', payload).then(function(result){ 
    return result.data; 
}); 

И контроллер (я не знаю, что ваша услуга называется, заменить TestService с именем):

TestService.save(param).then(function(data) { 
    console.log(data); //Hello data! 
}); 
Смежные вопросы