【发布时间】:2015-01-12 09:26:17
【问题描述】:
我是 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;
我已经阅读了我在谷歌上可以找到的关于这个问题的所有内容,因此我们将不胜感激。
【问题讨论】:
-
强烈建议不要将 jQuery ajax api 与 angular 混合使用。你真的只想在 Angular 应用程序中使用 jQuery 来处理 Angular 不支持的事情
-
你必须抛出 HTTP 错误代码。 stackoverflow.com/questions/4495961/…
-
@charlietfl 感谢您的提醒,经过一番研究,您指的是 $http 而不是 $ajax 吗?
-
@OverMars 是的。当您使用 Angular 之外的代码来执行修改范围的操作时,您必须每次都通知 Angular。当 Angular 已有设施时,更难测试并且没有意义
-
开始重构,谢谢!
标签: jquery ajax angularjs asp.net-web-api http-post