我正在尝试从 jQuery UI 自动完成调用中获取响应的 HTTP 状态代码,但我看不到任何方法。
$( "#site_search" ).autocomplete({source: '/members/search/suggest',
select: function (event, ui) {
var search = escape(ui.item.value);
window.location = '/members/search/?q='+search;
},
response: function (event, ui) {
console.log ($(this));
console.log (ui);
console.log (event);
}
});
该网站的登录名会在一段时间不活动后过期。但是,如果有人在那个时候开始搜索,那么自动建议就需要很长时间。我想做的是读取状态代码,查看 401,然后禁用页面加载的自动完成功能。我知道如何做那部分(api 有一个启用/禁用切换),但我不知道如何取回状态代码,即使将事件和 ui 放入 console.log。
谢谢,汉斯
更新
这是在导致问题的几种情况下工作的最终版本。我很高兴。谢谢阿穆拉 - 很大的帮助。
// SITE SEARCH
if ($('input#site_search').length)
{
$( "#site_search" ).autocomplete({
source: function(request, response)
{
$.ajax(
{
url: '/members/search/suggest',
dataType: 'json',
data: { term: request.term },
success: function(data, textStatus, jqXHR)
{
response(data);
},
error: function(jqXHR, textStatus, errorThrown)
{
if (textStatus == 'timeout')
{
$('input#site_search').autocomplete('disable');
}
// Handle errors here
},
timeout: 2000, // the SBWS login can slow things down, too
statusCode:
{
401: function ()
{
$('input#site_search').autocomplete('disable');
}
}
});
},
select: function (event, ui)
{
var search = escape(ui.item.value);
window.location = '/members/search/?q='+search;
}
});
}