[英]How to get HTTP error response code 403 in jQuery UI Autocomplete Ajax?
我正在对某些<input type='text'>
框使用jQuery UI自动完成功能,其中该框应根据输入返回一些选择。 这工作正常,但现在我需要添加检查,是否甚至允许用户执行此查找,否则,应提醒用户。
这是我当前的代码(或至少其中一些):
$(this).autocomplete({
source: function(request,response) {
$.ajax({
url: 'search.json',
data: { field: thisName,
search: request.term }
}).done(function(data) {
response(data);
}).fail(function(jqXHR, textStatus, errorThrown) {
console.dir(jqXHR);
console.log(textStatus);
console.log(errorThrown);
});
},
minLength: 1,
...[CUT]...
如果我的search.json
内部只有这个http_response_code(403);
我将在控制台中收到此消息(希望图片可读):
所以我的问题是- 我如何向自动完成脚本报告错误,以便其正确运行? 例如,它可以某种方式警告用户。
目前,我想使用403 Forbidden
代码进行报告,但是也可能存在其他错误-例如,用户会话可能过期或类似的错误。 它不一定需要是HTTP响应代码,但这是我认为在这种情况下最正确使用的代码?
请参阅我的代码的JSFiddle演示 。
我正在IIS 7.5上使用jQuery 1.11.0和jQuery-UI 1.10.4以及PHP 5.4。 IIS会将.json
文件作为普通的PHP文件传递-只是澄清是否重要。
使用AjaxSetup似乎是一个选择:
$.ajaxSetup({
error: function (x, status, error) {
if (x.status == 403) {
alert("Sorry, your session has expired. Please login again to continue");
window.location.href ="/Account/Login";
}
else {
alert("An error occurred: " + status + "nError: " + error);
}
}
});
资料来源: http : //cypressnorth.com/programming/global-ajax-error-handling-with-jquery/
由于$ .ajax()也支持error方法,因此它可能也适用于$ .ajax()本身。
我实际上发现这是由我在IIS中定义了自己的错误页面引起的。 当将错误代码403更改为其他代码(例如999)时,我会在我的Ajax脚本中得到403错误:
我自己回答了这个问题,以防其他人遇到类似的问题并且不知道自己定义的HTML错误消息/页面将在Ajax中给出200的HTTP响应代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.