2010-07-29 63 views
4

我正在使用jQuery自动完成控件通过AJAX调用从服务器自动完成。 我实现了搜索事件,以便在从服务器获取结果的同时显示“正在加载...”动画。 我想禁用该动画,并显示一条消息,如果从服务器获取自动完成结果失败(超时或其他) 最好的办法是做什么?jQuery UI自动完成 - 如何处理AJAX错误?

回答

4

查看jQuery.ajaxError方法,该方法允许您为所有ajax调用设置默认错误回调; http://api.jquery.com/ajaxError/

+1

这是一个全局处理程序...我如何处理自动完成的呼叫具体? – 2010-07-29 10:32:05

+1

我想你正在使用源代码:“url”---你可以在源代码中使用回调函数,并在它内部做一个手动的ajax,这将允许你指定一个错误回调。例如。 'source:function(request,response){$ .ajax({url:'url',data:request,/ *成功和错误回调* /}' - 然后在成功/失败时使用'response(myAutocompleteArrayHere)错误回调 – peol 2010-07-29 10:53:52

+0

嗯,我不认为我得到了最后的评论。如果jQuery自动完成源选项是一个函数,调用$ .ajax不会该函数返回之前ajax的成功回调得到执行? – 2010-07-31 03:36:35

0

我只是在这种情况下发现自己。我想从文本框中清除微调,并用红色突出显示,以提供错误的视觉反馈。但我有3个不同的文本框在DOM中使用相同的功能。所以,你可以做这样的事情:

function autocompleteSource(request,response){ 
    //"this" is the widget object, you can get the element that called the autocomplete function from here 
    var callerTextbox = $(this.element); 
    $.get(url,data).done(/*do your stuff with the data*/).fail(function(){ 
     highlight(callerTextbox) //That's my own function, uses jquery animation effects 
     response([]); //Use an empty response for clear the textbox 
    }); 
}