函数未在setInterval上运行

时间:2019-02-27 14:51:42

标签: javascript jquery ajax setinterval

我正在尝试更新从MySQL提取的表中的值,但该函数未重新运行?

或者,如果还有另一种解决方案允许我每隔60秒更新一次MySQL数据库中的值,请告诉我。

编辑:错误已解决,但现在我得到一个新的错误,而不是替换表单元格中的mysql值,它将新单元格添加到表中,需要更改或添加代码的哪一部分来解决此问题? / p>

以下代码不返回错误:

<script type="text/javascript">
$(document).ready(function(){
console.log(1+0);
$.ajax({
    url: 'fetch.php',
    type: 'get',
//type: 'post',
    dataType: 'JSON',
    success: function(response){
        var len = response.length;
        for(var i=0; i<len; i++){
            var beacon = response[i].beacon;
            var location = response[i].location;


            var tr_str = "<tr>" +
                "<td align='center'>" + beacon + "</td>" +
                "<td align='center'> <span class='minutes'>00</span>:<span class='seconds'>00</span> </td>" +
                "</tr>";

            $("#userTable tbody").append(tr_str);
        }
    setInterval(updateTable, 10000);
}
    })
})

        function updateTable() {
                    console.log(1+1);
$.ajax({
    url: 'fetch.php',
    type: 'get',
//type: 'post',
    dataType: 'JSON',
    success: function(response){
        var len = response.length;
        for(var i=0; i<len; i++){
            var beacon = response[i].beacon;
            var location = response[i].location;


            var tr_str = "<tr>" +
                "<td align='center'>" + beacon + "</td>" +
                "</tr>";

            $("#userTable tbody").append(tr_str);
            }

}
});
};

</script>

3 个答案:

答案 0 :(得分:2)

如果格式正确,您会发现setInterval位于函数内部... 您已将其放置在$(document).ready回调函数中。

$(document).ready(function () {
  $.ajax({
    url: 'fetch.php',
    type: 'get',
//type: 'post',
    dataType: 'JSON',
    success: function (response) {
      var len = response.length;
      for (var i = 0; i < len; i++) {
        var beacon = response[i].beacon;
        var location = response[i].location;


        var tr_str = "<tr>" +
            "<td align='center'>" + beacon + "</td>" +
            "<td align='center'> <span class='minutes'>00</span>:<span         class='seconds'>00</span> </td>" +
            "</tr>";

        $("#userTable tbody").append(tr_str);
      }
      // <===== You should place youre set interval here
    }
  })
});

function updateTable() {
  console.log(1 + 1);
  $.ajax({
    url: 'fetch.php',
    type: 'get',
//type: 'post',
    dataType: 'JSON',
    success: function (response) {
      var len = response.length;
      for (var i = 0; i < len; i++) {
        var beacon = response[i].beacon;
        var location = response[i].location;


        var tr_str = "<tr>" +
            "<td align='center'>" + beacon + "</td>" +
            "</tr>";

        $("#userTable tbody").append(tr_str);
      }

    }
  });
  var updateTableInterval = setInterval(updateTable, 10000);
}

答案 1 :(得分:0)

您似乎正在从内部 setInterval(updateTable)呼叫updateTable

您不是从updateTable外部的任何地方调用updateTable,这意味着该函数从未运行,并且setInterval也从未执行。 / p>

要解决此问题,请:

  1. setInterval的{​​{1}} 放在updateTable之外,或
  2. 在脚本末尾添加updateTable()

我推荐前者。

答案 2 :(得分:0)

代替使用setInterval,

pd.DataFrame(tup,columns=['letter','number']).merge(df,how='left')

在处理和更新表后尝试使用setTimeout:

setInterval(updateTable, 10000);

这将使您的代码在发出其他请求之前等待信息到达,而不被视为DoS攻击。

让我知道这是否对您有用。我们可以尝试其他方法。