首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何管理AngularJS http请求调用

如何管理AngularJS http请求调用
EN

Stack Overflow用户
提问于 2017-02-23 18:14:18
回答 2查看 110关注 0票数 3

我有一段发送双HTTP请求的代码,我希望首先提出身份验证请求,如果为真,执行下一条语句(只返回一个$http承诺)。我怎样才能在angularJS中做到这一点。到目前为止,它正在返回未定义的状态。

代码语言:javascript
复制
dmdb._login_request = function(credentials, conf) {
    var p = {
        '_method': 'POST',
        'data[User][username]': credentials.login,
        'data[User][password]': credentials.password
    };
    conf.headers = {
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
    };
    var userData = {
        'username': 'mbah',
        'password': 'abc@123',
        'applicationid': '1'
    };
    $http.post('myapp.com/authenticate/', userData, con).success(function(data) {
        if (data.success) {
            return $http.post(this.url + 'users/login', $.param(p), conf);
        }
        return $q.when('failed');
    })
};
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-23 18:39:22

我不太明白您的问题是什么,但是,看起来您正在尝试从一个承诺的函数中返回一些东西。

我建议您编写以下代码:

代码语言:javascript
复制
   var userData={
        'username':'mbah',
        'password':'abc@123',
        'applicationid':'1'
    };

    var deferred = $q.defer();

    $http.post('myapp.com/authenticate/',userData,con).success(function(data){
            if(data.success){
                   $http.post(this.url+'users/login',$.param(p),conf).success(function(data2){
                        deferred.resolve(data2);
                   })
            }
            // I dont understand what this is for
            //turn $q.when('failed');
    })

  return deferred.promise;
};

这样,您的函数将返回一个承诺,您可以使用您的目的。

如果对你没有帮助的话,请再详细说明一下

票数 1
EN

Stack Overflow用户

发布于 2017-02-24 09:45:49

代码语言:javascript
复制
my_obj._login_request = function (credentials,conf) {


  var url_=this.url;

        var p = {
        '_method': 'POST',
        'data[User][username]': credentials.login,
        'data[User][password]': credentials.password
    };
    conf.headers = {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'};


    var userData={
    'username':'mbah',
    'password':'abc@123',
    'applicationid':'1'
};

var deferred = $q.defer();

$http.post('auth/path/UserLogin/Login',userData).success(function(data){
       console.log(data);
        if(!angular.isDefined(data.status)){

                    deferred.resolve($http.post(url_+'/users/login',$.param(p),conf));
        }
        else{
             deferred.reject();
        }
})

 return deferred.promise;

};

这是我的最后一段代码,它作为expected.Thanks来帮助大家

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42423235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档