加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax – 如何在Angular中捕获http错误响应

发布时间:2020-12-15 22:52:51 所属栏目:百科 来源:网络整理
导读:背景 我的Angular应用程序通过一组API端点与数据库通信. “user / authenticate”端点接受用户名和密码,并返回成功(200)或错误请求(400)http响应. 调节器 authService.login(email,password) .success(function (response) { /* go to application */ }) .er
背景

>我的Angular应用程序通过一组API端点与数据库通信.
>“user / authenticate”端点接受用户名和密码,并返回成功(200)或错误请求(400)http响应.

调节器

authService.login(email,password)
    .success(function (response) {
        /* go to application */
    })
    .error(function (response) {
        /* display proper error message */
    });

身份验证服务

factory.login = function(email,password) {
    return $http({
        method: 'POST',url: "http://myserver/user/authenticate",data: $.param({email: email,password: password}),headers: {'Content-Type': 'application/x-www-form-urlencoded'}
    });
}

问题

当用户名和密码失败并且API返回400响应时,即使我正在捕获错误并且我向用户显示正确的消息,该错误也会出现在浏览器控制台中.

POST http://myserver/user/authenticate 400 (Bad Request)

我能以更好的方式处理错误吗?

解决方法

试试这个
factory.login = function(email,headers: {'Content-Type': 'application/x-www-form-urlencoded'}
    }).then(function (response) {
       /**Check here your status code 400 if you found that status code is 400 the reject the promise**/
            if (statuscode !==400) {
                        return response.data;
                    } else {
                        // invalid response
                        return $q.reject(response.data);
                    }

        },function (response) {
            // something went wrong
            return $q.reject(response);
        });
}

然后使用以下代码

authService.login(email,password)
        .then(function (response) {
            /* go to application */
        },function(error) {
                console.log(error); /* catch 400  Error here */
    });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读