Javascript 正在从设置了间隔的文件停止间隔

Javascript 正在从设置了间隔的文件停止间隔,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,如果我有名为index.php和fetch.php index.php包含: <script> $(document).ready(function(){ setInterval(function(){ $('#fetch').load('fetch.php') }, 1000); }); </script> <div id="fetch"></div> $sql = "SELECT * FROM p

如果我有名为
index.php
fetch.php

index.php包含:

<script>
    $(document).ready(function(){

    setInterval(function(){
        $('#fetch').load('fetch.php')
    }, 1000);

});
</script>
<div id="fetch"></div>
 $sql = "SELECT * FROM posts ORDER BY id DESC LIMIT 20";
    $result = $con->query($sql);

    if ($result->num_rows > 0) {

        while($row = $result->fetch_assoc()) {

           echo '

               <div>'.$row['post'].'</div><textarea id="comment" placeholder="Comment"></textarea><button id="btn">Comment</button>
';

    }}
点击按钮后,将其设置回

setInterval(function(){
            $('#fetch').load('fetch.php')
        }, 1000);
但它还需要重新加载整个index.php页面才能将$('fetch')更改为$('commenting')


因此,我想知道是否有任何方法可以从包含在间隔内的文件中停止间隔?

当textarea获得/失去焦点时,您可以停止/启动间隔。试试这个:

$(document).ready(function() {
    var timer; 

    function startInterval() {
        timer = setInterval(function(){
            $('#fetch').load('fetch.php')
        }, 1000);
    }

    $('#fetch textarea').on({
        focus: function() {
            clearInterval(timer);
        },
        blur: function() {
            startInterval();
        }
    });

    startInterval(); // on load
});

根据代码结构,我假设您正在构建一个聊天系统。如果是这样的话,您应该考虑使用websockets,因为AJAX轮询非常占用服务器,而且扩展性不好。

当textarea获得/失去焦点时,您可以停止/启动间隔。试试这个:

$(document).ready(function() {
    var timer; 

    function startInterval() {
        timer = setInterval(function(){
            $('#fetch').load('fetch.php')
        }, 1000);
    }

    $('#fetch textarea').on({
        focus: function() {
            clearInterval(timer);
        },
        blur: function() {
            startInterval();
        }
    });

    startInterval(); // on load
});

根据代码结构,我假设您正在构建一个聊天系统。如果是这样的话,您应该考虑使用WebSocket,因为AJAX轮询是非常服务器密集型的,并且不能很好地扩展。

您正在寻找函数clearInterval()

在变量中设置间隔,然后在需要时在其上设置clearInterval()

<script>
    $(document).ready(function(){

      abc = setInterval(function(){
        $('#fetch').load('fetch.php')
      }, 1000);


      // Conditions bla bla bla
      clearInterval(abc);
    });
</script>

$(文档).ready(函数(){
abc=设置间隔(函数(){
$('#fetch').load('fetch.php'))
}, 1000);
//条件布拉布拉布拉布拉布拉布拉布拉
净距(abc);
});

您正在查找函数clearInterval()

在变量中设置间隔,然后在需要时在其上设置clearInterval()

<script>
    $(document).ready(function(){

      abc = setInterval(function(){
        $('#fetch').load('fetch.php')
      }, 1000);


      // Conditions bla bla bla
      clearInterval(abc);
    });
</script>

$(文档).ready(函数(){
abc=设置间隔(函数(){
$('#fetch').load('fetch.php'))
}, 1000);
//条件布拉布拉布拉布拉布拉布拉布拉
净距(abc);
});

我想在这种情况下,最好使用
$.ajax
而不是
load()
是的,
clearInterval()
但是如果使用超时,并且只有在满足条件的情况下才设置一个新的超时,可能会更好。间隔可能会导致请求重叠。我想在这种情况下最好使用
$.ajax
,而不是
load()
是的,
clearInterval()
,但是如果使用超时,并且只有在满足条件的情况下才设置一个新的超时,可能会更好。间隔可能会导致请求重叠。我是否可以在单击并清除间隔,然后按文本区域上的enter as键13将其设置为startInterval?我不太明白这一切,但您肯定可以在按下enter键时通过调用函数再次启动间隔。要执行此操作,请连接
按键
事件并侦听keycode 13。更多信息:这是关于我与ajax php和mysqli聊天的帖子的评论。。。但它的不同之处在于,在聊天中,它唯一的文本和文本区域是从加载div移走的,但这里的注释在加载div内。。。喜欢和其他事情。。。所以我不想每次都重新加载来获得更新或后期编辑之类的东西,我知道我刚才问过我可以从你的代码中做这个更改吗:(“#fetch textarea”)。在({click:function(){clearInterval(timer);}上,按键(function(event){var key=(event.keyCode?event.keyCode:event.which);如果(key==13){startInterval(timer);}}}@Rorymcrossan基本上我不知道这是可能的,因为我的nick说我几乎一无所知…$('fetch textarea'),那么我可以为fetch div中的文件中的任何内容做吗?我想我可以说$('fetch#comment')或$('fetch button1'))等等?我可以在单击并清除间隔,然后按文本区域上的键13进入startInterval吗?我不太了解所有这些,但你可以在按下enter键时调用函数再次启动间隔。为此,连接
按键
事件并监听keycode 13。更多信息:它的r我用ajax php和mysqli聊天的帖子上的评论…但它不同,因为在聊天中,它唯一的文本和文本区域是从加载div移动的,但这里的评论在加载div中…有喜欢和其他东西…所以我不想每次都重新加载来获得喜欢的更新或帖子编辑或其他东西我知道我刚才问过我能做这个吗代码的范围:(“#fetch textarea”)。在({click:function(){clearInterval(timer);})上,按键(function(event){var key=(event.keyCode?event.keyCode:event.which);if(key==13){startInterval(timer);})@RoryMcCrossan基本上我不知道这是可能的,因为我的nick说我几乎一无所知…$('fetch textarea'),那么我可以为fetch div中的文件中的任何内容执行吗?或者?我想我可以说$('fetch#comment')或$('fetch#button1')等吗?