使用Angular发出POST请求

时间:2013-09-23 20:42:16

标签: jquery angularjs

警告:我是一名前端开发人员,我对服务器的经验不多。

我正在使用Angular 1.2构建一个应用程序,该应用程序在不同的子域上执行API。该项目的后端开发人员正在使用nginx并将其设置为允许跨域请求,实质上是转发子域,或类似的东西,我相信。我可以很好地执行$http.get请求,但是当我尝试$http.post时,我收到了Access-Control-Allow-Origin错误。

以下是踢球者:我可以使用jQuery的$.ajax发出相同的请求,但效果很好。

$.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");
    }
});

以下是我设置Angular的方法:

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;
        });
    },

我错过了什么?

3 个答案:

答案 0 :(得分: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!
});

答案 1 :(得分:1)

在这里找到答案:

http://victorblog.com/2012/12/20/make-angularjs-http-service-behave-like-jquery-ajax/

Angular发送序列化的JSON,jQuery发送查询字符串。

答案 2 :(得分:0)

这可能是与CORS相关的问题,特别是与X-Requested-With标头有关。 看这篇文章: How to load a cross-domain JSON with $http in angularjs 1.0.8 as it does with 1.2.0