Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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 函数未在setInterval上运行_Javascript_Jquery_Ajax_Setinterval - Fatal编程技术网

Javascript 函数未在setInterval上运行

Javascript 函数未在setInterval上运行,javascript,jquery,ajax,setinterval,Javascript,Jquery,Ajax,Setinterval,我试图更新从MySQL中拉入的表中的值,但函数没有重新运行 或者,如果有另一种解决方案允许我每隔60秒更新MySQL数据库中的值,请告诉我 编辑:错误已经解决,但现在我得到了一个新的错误,而不是替换表单元格中的mysql值。它向表中添加了新的单元格。要解决这个问题,需要更改或添加代码的哪部分 下面的代码不返回任何错误: <script type="text/javascript"> $(document).ready(function(){ console.log(1+0); $.a

我试图更新从MySQL中拉入的表中的值,但函数没有重新运行

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

编辑:错误已经解决,但现在我得到了一个新的错误,而不是替换表单元格中的mysql值。它向表中添加了新的单元格。要解决这个问题,需要更改或添加代码的哪部分

下面的代码不返回任何错误:

<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>

$(文档).ready(函数(){
控制台日志(1+0);
$.ajax({
url:'fetch.php',
键入:“get”,
//键入:“post”,
数据类型:“JSON”,
成功:功能(响应){
var len=响应长度;

对于(var i=0;i如果格式化好,您将看到您的
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);
}
$(文档).ready(函数(){
$.ajax({
url:'fetch.php',
键入:“get”,
//键入:“post”,
数据类型:“JSON”,
成功:功能(响应){
var len=响应长度;
对于(变量i=0;i//如果格式化良好,您将看到您的
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);
}
$(文档).ready(函数(){
$.ajax({
url:'fetch.php',
键入:“get”,
//键入:“post”,
数据类型:“JSON”,
成功:功能(响应){
var len=响应长度;
对于(变量i=0;i//看起来您正在从
updateTable
内部调用
setInterval(updateTable)

您没有从
updateTable
之外的任何地方调用
updateTable
,这意味着函数从未运行过,并且
setInterval
从未执行过

要解决此问题,请执行以下操作之一:

  • 将您的
    setInterval
    置于
    updateTable
    之外,或
  • updateTable()
    添加到脚本末尾

  • 我推荐前者。

    看起来您正在从内部调用
    setInterval(updateTable)

    您没有从
    updateTable
    之外的任何地方调用
    updateTable
    ,这意味着函数从未运行过,并且
    setInterval
    从未执行过

    要解决此问题,请执行以下操作之一:

  • 将您的
    setInterval
    置于
    updateTable
    之外,或
  • updateTable()
    添加到脚本末尾

  • 我建议使用前者。

    而不是使用setInterval

    setInterval(updateTable,10000);

    处理并更新表后,请尝试使用setTimeout:

    function updateTable() {
      $.ajax({
        ...
        ,complete: function(data){
           // do something
           setTimeout(updateTable, 10000);
        ...
      });
    }
    
    这将允许您的代码在发出另一个请求之前等待信息到达,而不会被视为DoS攻击


    让我知道这是否适合您。我们可以尝试其他方法。

    而不是使用setInterval

    setInterval(updateTable,10000);

    处理并更新表后,请尝试使用setTimeout:

    function updateTable() {
      $.ajax({
        ...
        ,complete: function(data){
           // do something
           setTimeout(updateTable, 10000);
        ...
      });
    }
    
    这将允许您的代码在发出另一个请求之前等待信息到达,而不会被视为DoS攻击


    让我知道这是否适合您。我们可以尝试其他方法。

    为什么
    setInterval(updateTable,10000)
    inside
    updateTable
    ?关于编辑:如果您的原始问题已得到回答,请将该答案标记为答案,然后再问一个新问题。@freedomn-m我已将答案标记为正确,不想问太多问题,因为我以前被用户标记为问太多问题和阻塞d再问90天OK,我不知道人们会因为问后续问题而投票反对。这似乎是这里的规则-问一个问题,得到一个答案,不要改变问题。也许把你的后续作为对答案的评论,有时候人们很好,如果没有太多额外的工作,他们会跟进。至于你的编辑:此代码添加新单元格:
    $(“#userTable tbody”).append(tr#u str);
    为什么
    setInterval(updateTable,10000)
    inside
    updateTable
    ?关于编辑:如果您的原始问题已得到回答,请将该答案标记为答案,然后再问一个新问题。@freedomn-m我已将答案标记为正确,不想问太多问题,因为我以前被用户标记为问太多问题和阻塞d再问90天OK,我不知道人们会因为问后续问题而投票反对。这似乎是这里的规则-问一个问题,得到一个答案,不要改变问题。也许把你的后续作为对答案的评论,有时候人们很好,如果没有太多额外的工作,他们会跟进。至于你的编辑:此代码添加新单元格:
    $(“#userTable tbody”).append(tr#u str);