Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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
Php Json数据异常行为_Php_Jquery_Html_Ajax_Json - Fatal编程技术网

Php Json数据异常行为

Php Json数据异常行为,php,jquery,html,ajax,json,Php,Jquery,Html,Ajax,Json,当通过ajax以一定的间隔加载json数据时,我体验到了一些奇怪的行为。 数据加载良好,仅在几次间隔之后,数据才会在间隔之间扰乱并保持运行。这甚至会导致浏览器崩溃 html页面 有什么建议可以解决这个问题吗?天哪 你在递归地调用它 setInterval(ahitRate, 5000); 编辑:只需将setInterval(…)更改为setTimeout(ahitRate,5000) 每次执行时,旧的会继续运行,新的会被添加,所以它会使用越来越多的内存 $(function() {

当通过ajax以一定的间隔加载json数据时,我体验到了一些奇怪的行为。 数据加载良好,仅在几次间隔之后,数据才会在间隔之间扰乱并保持运行。这甚至会导致浏览器崩溃

html页面

有什么建议可以解决这个问题吗?

天哪

你在递归地调用它

setInterval(ahitRate, 5000);
编辑:只需将setInterval(…)更改为setTimeout(ahitRate,5000)

每次执行时,旧的会继续运行,新的会被添加,所以它会使用越来越多的内存

$(function() {
    function ahitRate() 
    {
         $.ajax({
         cache: false,
         url: 'average.php',
         data: 'jsonData',
         dataType: 'json',
         processData: false,
         success: function(data)
                    {
                         var ahr = data[0];              //get id
                         var hitRate = data[1];           //get name
                         $('#output').html("<b>id: </b>"+ahr+"<b> name:   </b>"+hitRate); 
                         }           
         });
    } 

    setInterval(ahitRate, 5000);

});
$(函数(){
函数ahitRate()
{
$.ajax({
cache:false,
url:'average.php',
数据:“jsonData”,
数据类型:“json”,
processData:false,
成功:功能(数据)
{
var ahr=data[0];//获取id
var hitRate=data[1];//获取名称
$('#output').html(“id:+ahr+”name:+hitRate);
}           
});
} 
设定间隔(ahitRate,5000);
});
唯一不同的是我:

  • 从ajax成功函数中删除了setInterval(…)方法
  • 在闭包结束时只调用了一次(“$(function(){…}”)

  • 这将导致每5秒调用一次“ahitRate()”函数。

    setInterval不断启动-每次收到新响应时,您都会启动一个新计时器。因此,5秒后,第一个计时器启动,然后启动另一个计时器。10秒后,两个计时器都启动,然后再启动两个计时器

    我想你能看到这是怎么回事


    我想您正在寻找setTimeout()方法,或者只是在success函数之外启动间隔计时器,这样就不会再调用它了。

    显示来自php@shyjujson输出为[“平均命中率”,20]其中数字是phpThanx为快速回复生成的随机字符串,我已推送了您在上面所做的更改,但奇怪的行为仍在发生。它工作正常,旧页面仍被我的浏览器缓存。Thnx获得帮助!!太棒了!如果解决了您的问题,请确保接受答案;)
    setInterval(ahitRate, 5000);
    
    $(function() {
        function ahitRate() 
        {
             $.ajax({
             cache: false,
             url: 'average.php',
             data: 'jsonData',
             dataType: 'json',
             processData: false,
             success: function(data)
                        {
                             var ahr = data[0];              //get id
                             var hitRate = data[1];           //get name
                             $('#output').html("<b>id: </b>"+ahr+"<b> name:   </b>"+hitRate); 
                             }           
             });
        } 
    
        setInterval(ahitRate, 5000);
    
    });