$(document).ready(function () {
var searchValue = "";
setInterval(checkTextboxChanged, 0.5);
function checkTextboxChanged() {
var currentValue = $('#dept').val();
if (currentValue != searchValue) {
searchValue = currentValue;
TextboxChanged();
}
}
function TextboxChanged() {
$.ajax({
url: "<?php echo base_url();?>check_price.html",
data: "dept="+$("#dept").val()+"&arrive="+$("#arrive").val()+"&parking="+$("#parking").val(),
success: function(result){
$("#check_price").html(result);
}
});
}
});
这在Chrome,firefox中工作正常但在IE中却没有..在setInterval方法中有什么问题吗?它支持IE吗?
答案 0 :(得分:1)
setInterval
有一个小超时是一个非常真的坏主意,无论你使用哪种浏览器。
setInterval
的事情是,无论页面是否准备就绪,都会在指定的时间间隔内触发事件。
如果间隔时间很短,这很容易导致事件堆积的速度超过网站处理它们的速度。
你在这里使用ajax是一个经典的例子:如果ajax事件需要超过半秒才能完成(这很容易),那么你最终将会同时调用多个事件。这将导致您的ajax服务被同时调用淹没,这将使其响应时间变慢,从而使浏览器中的问题更加严重。
通过这种方式,使用自动重新setTimeout
调用几乎总是更好,这将确保在前一个事件完成之前永远不会触发事件。
但是,无论哪种方式,对于任何类型的间隔处理,0.5ms的间隔都是一个疯狂的短时间跨度。无论你正在做什么,你很可能会遇到性能问题,超时很短。
我怀疑你实际上是半秒而不是半毫秒。如果是这种情况,则应将其更改为500
而不是0.5
。