Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 连续AJAX调用块页面,Firefox_Javascript_Jquery_Html_Ajax_Firefox - Fatal编程技术网

Javascript 连续AJAX调用块页面,Firefox

Javascript 连续AJAX调用块页面,Firefox,javascript,jquery,html,ajax,firefox,Javascript,Jquery,Html,Ajax,Firefox,这是我第一次面对这个问题。我已经多次使用AJAX 我正在调用AJAX来更新页面内容。AJAX调用在每2秒之后进行。对于一些点击,它工作正常,但之后我在FIREFOX浏览器上收到以下警告 这只发生在FIREFOX上,我不会在杂务浏览器上收到这样的警告 我的代码是: function search_by_location (location_id) { console.log(location_id); setInterval(function(){ $.

这是我第一次面对这个问题。我已经多次使用AJAX

我正在调用AJAX来更新页面内容。AJAX调用在每2秒之后进行。对于一些点击,它工作正常,但之后我在FIREFOX浏览器上收到以下警告

这只发生在FIREFOX上,我不会在杂务浏览器上收到这样的警告

我的代码是:

function search_by_location (location_id) {  
    console.log(location_id);

    setInterval(function(){ 

        $.ajax({
            type:"POST",
            url: "<?php echo BASE_URL.'controller/function'?>",
            data:{"key":location_id},
            cache:false,
            success:function(data){
                $("#custom_div").html("");
                $("#custom_div").html(data);
                search_by_location (location_id);
            },
            error:function(err){
                console.log(err);
            }
        });
    }, 2000);
}
函数按位置搜索(位置id){
控制台日志(位置\标识);
setInterval(函数(){
$.ajax({
类型:“POST”,
url:“”,
数据:{“key”:location_id},
cache:false,
成功:功能(数据){
$(“#custom_div”).html(“”);
$(“#custom_div”).html(数据);
按位置搜索(位置id);
},
错误:函数(err){
控制台日志(err);
}
});
}, 2000);
}

问题是什么?我认为这是因为多次点击和页面更新。它与缓存相关吗?

问题在于,您每2秒发出一次AJAX请求,但每次请求完成时都会启动一个新计时器。因此,您发出的请求数量呈指数级增长。您应该删除
success
处理程序中的
search\u by_location()
调用:

function search_by_location (location_id) {  
    setInterval(function() { 
        $.ajax({
            type: "POST",
            url: "<?php echo BASE_URL.'controller/function'?>",
            data: { key: location_id },
            cache: false,
            success: function(data){
                $("#custom_div").html(data);
            },
            error: function(err){
                console.log(err);
            }
        });
    }, 2000);
}

如果您要求客户端始终能够立即访问最新数据,那么您可能还希望使用WebSocket。如果您不小心,轮询模式可能会导致DDoS攻击您自己的服务器。

我认为这是因为setinterval。因为我认为每2000个时间段都会执行相同的代码。
function search_by_location (location_id) {  
    $.ajax({
        type: "POST",
        url: "<?php echo BASE_URL.'controller/function'?>",
        data: { key: location_id },
        cache: false,
        success: function(data){
            $("#custom_div").html(data);
        },
        error: function(err){
            console.log(err);
        },
        complete: function() {
            setTimeout(function() {
                search_by_location(location_id);
            }, 2000);
        }
    });
}