Php 如何在jQueryUI自动完成Ajax中获取HTTP错误响应代码403?

Php 如何在jQueryUI自动完成Ajax中获取HTTP错误响应代码403?,php,jquery,jquery-ui-autocomplete,Php,Jquery,Jquery Ui Autocomplete,我正在为一些框使用jQuery UI自动完成功能,根据输入返回一些选择。这是工作正常,但现在我需要添加一个检查,如果用户甚至可以做这个查找,如果不允许,用户应该得到警告 这是我当前的代码(至少是其中的一部分): 如果我在我的search.json中只有这个http\u响应\u代码(403)我将在控制台中收到此消息(我希望图片可读): 因此,我的问题是-如何向自动完成脚本报告错误,使其正确运行?例如,它可以以某种方式提醒用户 目前,我想使用403禁止的代码进行报告,但也可能存在其他错误-例如,用

我正在为一些
框使用jQuery UI自动完成功能,根据输入返回一些选择。这是工作正常,但现在我需要添加一个检查,如果用户甚至可以做这个查找,如果不允许,用户应该得到警告

这是我当前的代码(至少是其中的一部分):

如果我在我的
search.json
中只有这个
http\u响应\u代码(403)我将在控制台中收到此消息(我希望图片可读):

因此,我的问题是-如何向自动完成脚本报告错误,使其正确运行?例如,它可以以某种方式提醒用户

目前,我想使用
403禁止的
代码进行报告,但也可能存在其他错误-例如,用户会话可能会过期或类似错误。它不一定需要是HTTP响应代码,但我认为这是在这个场景中使用的最正确的代码

请查看我的代码


我正在IIS7.5上使用jQuery1.11.0和jQueryUI1.10.4以及PHP5.4。IIS将像普通PHP文件一样传递
.json
文件-只是为了说明是否重要。

使用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);
        }
    }
});
资料来源:


由于$.ajax()还支持error方法,因此它可能也适用于$.ajax()本身

我发现这是因为我在IIS中定义了自己的错误页面。当将错误代码403更改为其他内容(例如999)时,我会将403错误添加到我的Ajax脚本中:


如果其他人有类似的问题,并且不知道他们自己定义的HTML错误消息/页面在Ajax中会给出200的HTTP响应代码,我自己已经回答了这个问题。

引用
jqXHR.success()、jqXHR.error()和jqXHR.complete()回调从jQuery 1.8开始就不推荐使用。要准备代码以便最终删除,请使用jqXHR.done()、jqXHR.fail()和jqXHR.always()。
ah,对不起。很高兴看到您找到了答案,您一直在努力解决IIS插入的错误处理问题。@vogomatix-这会将其视为有效结果,并将其设置为自动完成选项
$.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);
        }
    }
});