AngularJS & Ajax post - 如何触发 ajax 错误(而不是成功)回调
AngularJS & Ajax post - how to get ajax error (instead of success) callback to fire
我是 ajax 的新手,所以请原谅我的无知。
在 AngularJs 中,我像这样制作 ajax post:
$.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;
我已经阅读了在 google 上可以找到的关于此事的所有内容,如有任何帮助,我们将不胜感激。
我不确定您要使用 C# 代码实现什么。触发错误回调(用于测试目的)的最简单方法是在您的 C# 代码中抛出异常:
throw new Exception();
从正在发布的数据中省略了一个必需的 key/value 对,参考 javascript 第 9 行的 postObj
。我假设在发布到帐户注册端点时需要全部或部分内容。
而不是
return new HttpResponseMessage(HttpStatusCode.InternalServerError);
创建并return以下内容:
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, new Exception("Test"));
并且任何 $Ajax 或 $http 方法的 .error 回调将被触发。
我是 ajax 的新手,所以请原谅我的无知。
在 AngularJs 中,我像这样制作 ajax post:
$.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;
我已经阅读了在 google 上可以找到的关于此事的所有内容,如有任何帮助,我们将不胜感激。
我不确定您要使用 C# 代码实现什么。触发错误回调(用于测试目的)的最简单方法是在您的 C# 代码中抛出异常:
throw new Exception();
从正在发布的数据中省略了一个必需的 key/value 对,参考 javascript 第 9 行的 postObj
。我假设在发布到帐户注册端点时需要全部或部分内容。
而不是
return new HttpResponseMessage(HttpStatusCode.InternalServerError);
创建并return以下内容:
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, new Exception("Test"));
并且任何 $Ajax 或 $http 方法的 .error 回调将被触发。