Ili*_*ans 4 javascript jquery jquery-ui jquery-autocomplete
出于某种原因,我在网站上制作的ajax请求在一半的时间内中止.当我为ajax请求设置超时时,这解决了,如下所示.
$.ajax({
url: "/question/why_wont_it_work",
timeout : 1000,
success: function(){ /*do stuff*/ }
});
Run Code Online (Sandbox Code Playgroud)
遗憾的是,超时修复似乎不适用于jquery自动完成.我这样使用它:
$( "#questionTags" ).autocomplete({
source: "/question/tags",
timeout: 1000,
select: function(event, ui) { /*do stuff*/ },
});
Run Code Online (Sandbox Code Playgroud)
我检查了网站上的jQueryUI文档,但也没有看到超时选项.现在这很烦人,因为有一半时间我的请求会中止,我不会得到我想要的结果.有没有解决的办法?
提前致谢.
您可以为source参数提供任意函数.因此,您可以手动发出AJAX请求并指定timeout选项:
var xhr = null; /* To prevent multiple calls from happening while one is in progress */
$("#questionTags").autocomplete({
source: function (request, response) {
if (!xhr) {
xhr = $.ajax({
url: "/question/tags",
timeout: 20000,
data: request,
dataType: "json",
success: function (data) {
xhr = null;
response(data);
},
error: function () {
response([]);
}
});
}
},
select: function(event, ui) { /*do stuff*/ },
});
Run Code Online (Sandbox Code Playgroud)
但是我和@ El Ronnoco在一起,你可能想要认真加快你的要求.20秒是很长的等待时间.
| 归档时间: |
|
| 查看次数: |
6830 次 |
| 最近记录: |