angularjs $ http.post带参数

gsi*_*dze 2 javascript angularjs

我是棱角分明的新人,如果我的问题有点低,请不要生我的气.

如果用户将通过auth,我有web服务返回sessionId和登录成功消息.例如url是:

HTTP://本地主机:8181 /登录用户名=用户名和密码= 12345

这是我的回答:

{"sessionId":"0997cec2a8b34c84ba8419ab1204e6aa","loginSucceeded":true}
Run Code Online (Sandbox Code Playgroud)

这是我的登录控制器:

app.controller('loginCtrl', function($scope, loginService){
    $scope.login=function(user){
        loginService.login(user);
    }
});
Run Code Online (Sandbox Code Playgroud)

这是我的服务:

app.factory('loginService', function($http){
    return{
        login: function(user){
            var $promise=$http.post('http://localhost:8181/login?', user);
            $promise.then(function(msg){
                if(msg.loginSucceeded=="true")
                    console.log("opa")
                else
                    console.log("den");
            });
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

我的范围内有user.username和user.password(使用文本框).

如何在url中传递这些参数以及如何解析该响应?

Jas*_*elf 5

在您的代码中,您将在POST请求的URL中传递用户名和密码.如果这是你真正想要的(将它们作为POST数据传递更常见),那么你可以使用它:

login: function(user){
    var url = 'http://localhost:8181/login?username=' + user.name + '&password=' + user.password;
    $http.post(url).then(function(msg){
        if(msg.loginSucceeded==="true"){
            console.log("opa")
        }else{
            console.log("den");
        }
    });    
}
Run Code Online (Sandbox Code Playgroud)

如果要将数据作为POST数据传递,可以将其作为$http.post()调用中的第二个参数传递:

login: function(user){
    var url = 'http://localhost:8181/login';
    var data = {username: user.name, password: user.password};
    $http.post(url, data).then(function(msg){
        if(msg.loginSucceeded==="true"){
            console.log("opa")
        }else{
            console.log("den");
        }
    });
};
Run Code Online (Sandbox Code Playgroud)