Jquery abort ajax 导致错误 0
2013-10-21
408
进行简单的 jquery ajax 调用:
var ajaxOb;
var callAjax = function (){
if (ajaxOb ){
ajaxOb .abort();
}
ajaxOb = $.ajax({..});
}
函数调用 Ajax 被添加到输入文本字段的 onPress 事件中。 它工作正常,除了当我快速输入某些内容时出现 Ajax 错误 (0)
如何防止这种情况?
2个回答
可能是因为您同时触发了太多 XHR 请求。大多数浏览器都会将它们限制在合理的范围内。一个潜在的解决方案是 不要 在每次按键时触发事件,而是加入一个计时器,以确保事件在指定时间内最多触发一次。您可以使用我之前制作的这个小插件来实现这一点:
(function ($) {
$.fn.delayEvent = function (event, callback, ms) {
var timer = 0;
$(this).on(event, function () {
clearTimeout (timer);
timer = setTimeout(callback, ms);
});
return $(this);
};
})(jQuery);
用法:
$("#someTextInput").delayEvent("keyup", function () {
console.log("I will fire a maximum of once every 500ms");
}, 500);
karim79
2013-10-21
也许它只是触发得太频繁了!
你可以尝试使用 setTimeout:
var ajaxOb;
var timeout;
var callAjax = function (){
if (ajaxOb ){
ajaxOb .abort();
}
clearTimeout(timeout);
timeout = setTimeout(function(){
ajaxOb = $.ajax({..});
}, 100);
}
reyaner
2013-10-21