http请求不在刷新页面中执行

时间:2017-08-03 05:57:19

标签: angularjs http post request

我的http请求在我的令牌在第一次刷新过期后无法正常工作,但在第二次刷新时工作正常,但该功能执行正常出错了。我在角框架中工作



$http({
    url: "http://localhost/ArisSystem/api/system/subsystem",
    method: "GET",
    dataType: 'json',
    ContentType: 'application/x-www-form-urlencoded',
    params: {
        parentId: $scope.systemIdToLoad
    },
    headers: authHeaders
}).then(function (response) {
    $scope.subsystem = response.data;
}), function (xhr, status, error) {
    if (refreshtoken && xhr.status === 401) {
         $scope.refreshlocal();
    }
}
$scope.refreshlocal = function () {
    $.ajax({
        url: "http://localhost/ArisSystem/login",
        data: {
            refresh_token: refreshtoken,
            grant_type: 'refresh_token'
        },
        type: 'POST',
        dataType: 'json',
        ContentType: 'application/x-www-form-urlencoded',
        success: AjaxSucceeded,
        error: AjaxFailed
    })
    function AjaxSucceeded(response) {
        localStorage.setItem('accessToken', response.access_token);
        localStorage.setItem('refreshToken', response.refresh_token);
        refreshtoken = localStorage.getItem('refreshToken');
        accesstoken = localStorage.getItem('accessToken');
        authHeaders.Authorization = 'Bearer ' + accesstoken;
    }
    function AjaxFailed(err, response) {
        window.location.href = "login.html"
    }
}




1 个答案:

答案 0 :(得分:0)

您的then功能中有拼写错误。错误回调在参数列表之外。相反它应该是这样的:

$http({
...
}).then(function (response) {
    $scope.subsystem = response.data;
}, function (xhr, status, error) {
    if (refreshtoken && xhr.status === 401) {
        $scope.refreshlocal();
    }
});

我只是在错误回调函数之后将)从第5行移回。

应该这样做。我建议您更改$.ajax的第二个请求以使用$http服务,只是为了保持代码的一致性。