AngularJS& Ajax post - 如何获取ajax错误(而不是成功)回调激活

时间:2015-01-11 01:48:37

标签: jquery ajax angularjs asp.net-web-api http-post

我是ajax的新手,所以请原谅我的无知。

在AngularJs中,我像这样制作ajax帖子:

            $.ajax({
                url: "http://localhost:65337/api/Account/Register",
                type: "POST",
                beforeSend: function (request) {
                    request.setRequestHeader("Authorization", "Bearer " + $scope.authToken);
                    request.setRequestHeader("Content-Type", "application/json; charset=utf-8");
                },
                datatype: "json",
                data: JSON.stringify(postObj)
            }).error(function (data, status, error) {
                $scope.$emit('MESSAGE', data.Message, data.IsError);
            }).success(function (xmlHttpRequest, status, error) {
                // this callback fires even on server error code 500
            })

尝试在我的服务器上遇到内部错误时尝试触发上述错误回调,当服务器遇到错误时,我发送以下回复:

        var response = new HttpResponseMessage(HttpStatusCode.InternalServerError);
        ErrorTModel data = new ErrorTModel(msg, IsError);

        response.Content = new StringContent(
            JsonConvert.SerializeObject(data,
            Formatting.Indented,
            new JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }),
            Encoding.UTF8,
            "application/json"
            );

        return response;

我已经阅读了谷歌关于此事的所有内容,因此非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

我不确定您要使用c#代码尝试实现的目标。将错误回调触发(用于测试目的)的最简单方法是在c#代码中抛出异常:

throw new Exception();

答案 1 :(得分:1)

而不是

return new HttpResponseMessage(HttpStatusCode.InternalServerError);

创建并返回以下内容:

return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, new Exception("Test"));

将触发任何$ Ajax或$ http方法的.error回调。

答案 2 :(得分:0)

从发布的数据中省略所需的键/值对,参考javascript第9行的postObj。我会假设在发布到帐户注册终端时需要全部或部分内容。