我正在尝试从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;
}
});
}
答案 0 :(得分:2)
您需要定义源选项并使用$.ajax自行执行提交。然后使用statusCode选项处理您关心的状态代码:
$( "#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) {
// Handle errors here
},
statusCode: {
401: function () {
// Disable autocomplete here
}
}
});
});,
注意:您需要jquery 1.5+才能使用。