【问题标题】:How to empty an array?如何清空数组?
【发布时间】:2012-04-05 16:55:38
【问题描述】:

昨天我问了一个关于json的问题

链接:How to return an array from jQuery ajax success function and use it in a loop?

答案之一是这个

setInterval(updateTimestamps,30000);
var ids = new Array();

function updateTimestamps(){
    $(".timestamp").each(function(i){
    var obj = new Object();
    obj.id = $(this).attr("postID");
    obj.timestamp = $(this).attr("postdate");
        ids.push(obj);
    }

    $.post("http://site.com/ajax/humanTime.php", {"time": ids}, function(data) {
        for (i = 0; i < data.length; i++) {
            $("#" + data[i].id).html(data[i].content);
        }
    }, "json");
}

这个脚本的问题是数据被复制了

第一次执行的时候是这样的

Array
(
    [0] => Array
        (
            [id] => 26629
            [timestamp] => 1332273712
        )

    [1] => Array
        (
            [id] => 26628
            [timestamp] => 1332243526
        )

    [2] => Array
        (
            [id] => 26627
            [timestamp] => 1332237777


)

第二次是

Array
(
    [0] => Array
        (
            [id] => 26629
            [timestamp] => 1332273712
        )

    [1] => Array
        (
            [id] => 26628
            [timestamp] => 1332243526
        )

    [2] => Array
        (
            [id] => 26627
            [timestamp] => 1332237777
        )

    [3] => Array
        (
            [id] => 26629
            [timestamp] => 1332273712
        )

    [4] => Array
        (
            [id] => 26628
            [timestamp] => 1332243526
        )

    [5] => Array
        (
            [id] => 26627
            [timestamp] => 1332237777
        )

)

我尝试使用 var ids= Array(); , vas ids = [];但那确实有效

【问题讨论】:

  • 你检查过 PHP 脚本本身返回的内容吗?

标签: javascript php arrays json ajax


【解决方案1】:

重置数组的简单方法:ids.length = 0;。所以

function updateTimestamps(){
  ids.length = 0;
  // [...]
}

【讨论】:

    【解决方案2】:

    在开始推送项之前设置ids = []。这是您的代码,经过重构:

    var ids;
    
    function updateTimestamps() {
        ids = []; // <-- the answer
        $(".timestamp").each(function(i) {
            ids.push({
                id: $(this).attr("postID"),
                timestamp: $(this).attr("postdate")
            });
        });
        $.post("http://site.com/ajax/humanTime.php", {"time": ids}, function(data) {
            for (var i = 0; i < data.length; i++) {
                $("#" + data[i].id).html(data[i].content);
            }
        }, "json");
    }
    
    setInterval(updateTimestamps, 30000);​
    

    【讨论】:

      【解决方案3】:

      试试这个:

      var ids;
      
      function updateTimestamps(){
        ids = [];
         ...
      

      【讨论】:

        【解决方案4】:

        之后

        function updateTimestamps(){
        

        添加

        ids = [];
        

        【讨论】:

          【解决方案5】:
          setInterval(updateTimestamps,30000);
          
          function updateTimestamps(){
              var ids = []; // put it here
          
              $(".timestamp").each(function(i){
              var obj = {};
              obj.id = $(this).attr("postID");
              obj.timestamp = $(this).attr("postdate");
                  ids.push(obj);
              }
          
              $.post("http://site.com/ajax/humanTime.php", {"time": ids}, function(data) {
                  for (i = 0; i < data.length; i++) {
                      $("#" + data[i].id).html(data[i].content);
                  }
              }, "json");
          }
          

          【讨论】:

            猜你喜欢
            • 2011-04-04
            • 2018-08-30
            • 2010-11-16
            • 1970-01-01
            • 2021-02-03
            • 2010-12-06
            • 1970-01-01
            相关资源
            最近更新 更多