我正在尝试使用jQuery ajax调用Web api方法。使用非常基本的方法,我无法获得ajax调用来返回正确的响应。我尝试了多种方式,认为这可能是回应,但没有运气。
这是我的代码:
Web API
// POST api/token
public Token Post(User user)
{
throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized));
}
jQuery
$.ajax({
url: http://myUrl/api/token',
type: 'POST',
dataType: 'json',
data: data,
success: function () {
},
error: function (request, status, error) {
alert(request.status);
//request.status is always 0, I am expecting 401
}
});
我也尝试使用:
.done(function() {
})
.fail(function(data) {
//status code is always 0 instead of expected 401
});
和:
statusCode: {
401: function () {
//Never gets hit
},
}
当我在FF中使用Firebug检查响应时,我在控制台中收到了正确的响应:
POST http://myUrl/api/token 401 Unauthorized
因此,饱和状态代码始终为0或从未命中401 statusCode:。我在做什么错和/或为了正确捕获客户端上的401错误需要做什么?
最佳答案
我终于找到了问题。 $ .ajax不喜欢跨域调用。将“Access-Control-Allow-Origin:*”添加到我的REST POST方法的响应 header 后,便可以获取正确的数据。
关于jquery - Web API和jQuery ajax没有收到正确的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18550072/