IE中的jquery ajax兼容性

时间:2013-11-26 16:46:16

标签: javascript jquery ajax internet-explorer

$(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吗?

1 个答案:

答案 0 :(得分:1)

setInterval有一个小超时是一个非常真的坏主意,无论你使用哪种浏览器。

setInterval的事情是,无论页面是否准备就绪,都会在指定的时间间隔内触发事件。

如果间隔时间很短,这很容易导致事件堆积的速度超过网站处理它们的速度。

你在这里使用ajax是一个经典的例子:如果ajax事件需要超过半秒才能完成(这很容易),那么你最终将会同时调用多个事件。这将导致您的ajax服务被同时调用淹没,这将使其响应时间变慢,从而使浏览器中的问题更加严重。

通过这种方式,使用自动重新setTimeout调用几乎总是更好,这将确保在前一个事件完成之前永远不会触发事件。

但是,无论哪种方式,对于任何类型的间隔处理,0.5ms的间隔都是一个疯狂的短时间跨度。无论你正在做什么,你很可能会遇到性能问题,超时很短。

我怀疑你实际上是半秒而不是半毫秒。如果是这种情况,则应将其更改为500而不是0.5