2017-01-01 60 views
0

我从服务器请求数据,如果我发布新的数据我想显示旧数据+加新的,但浏览器代替,这是我所得到的:入门刚刚更新列表

$(document).ready(function() { 
    loadpost() 
}); 

function loadpost() { 
    $.ajax({ 
     url: '/home/_loading_process/', 
     dataType: 'json', 
     type: 'GET' 
     }) 
     .done(function(data) { 
      var dataArray = []; 

      $.each(data.posts, function(i) { 
      dataArray.push(data.posts[i].comment); 
      }); 

      console.log(dataArray); 
      $.each(dataArray, function(i) { 
       $('div').clone.appendTo('anotherdiv'); 
      } 
      }); 
     }; 

// output 
// [1] 
// [1, 2] 
// [1, 2, 3] 

我怎样才能得到它只是显示更新的列表,而不是显示旧的和更新的同时是这样的:

// [1, 2] 

// output 
// [1] 

发布新的数据后

不:

// [1] 
// [1, 2] 
+0

不能肯定什么要求?在'javascript'问题处,每次调用'loadPost'时都会创建一个新数组。您是否尝试在'loadPost'调用之外创建一个数组,然后将新元素推送到单个数组? – guest271314

+0

在我试图使用.clone之前,不使用.html,因为我在html文件中有很多代码。我希望每次用户发布新数据只是在浏览器上显示一个列表,但是我得到的行为与来自控制台的行为相同 – quechon

+0

@ guest271314是的,听起来像我需要的 – quechon

回答

0

正如JJJ说,你不能改变的控制台输出,但如果你真的想存储的更新列表,你应该从服务器端做到这一点,如果你不能改变的代码,你可以存储对象然后迭代并更新数组。

$.ajax({ 
    url: 'yourURL', 
    method: 'yourMethod', 
    dataType: 'yourDataType', 
    success: function(data){ 
     dataArray = []; 
     $.each(data.posts, function(index){ 
       dataArray.push(this.comment); 
     }); 
     /* Iterate in the dataArray and append the elements in 
     * HTML nodes 
     */ 
    } 
}); 
1

你正在创建在每次调用loadPostdataArray。定义dataArray以外的loadPost函数。在每个呼叫中​​通过dataArrayloadPost或者全局定义dataArray.push()到相同阵列的新元素。

$(document).ready(function(){ 
    const dataArray = []; 
    loadpost(dataArray); 
    // at next call to `loadPost` pass same array: `dataArray`  
}); 

function loadpost(arr) {  
    $.ajax({  
     url: '/home/_loading_process/', 
     dataType: 'json', 
     type: 'GET'  
    }) 
    .done(function(data){ 
     $.each(data.posts, function(i){ 
      arr.push(data.posts[i].comment); 
     });  
     console.log(arr); 
    });  
}; 

$(document).ready(function(){ 
    loadpost()  
}); 

const dataArray = []; 

function loadpost() {  
    $.ajax({  
     url: '/home/_loading_process/', 
     dataType: 'json', 
     type: 'GET'  
    }) 
    .done(function(data){ 
     $.each(data.posts, function(i){ 
      dataArray.push(data.posts[i].comment); 
     });  
     console.log(dataArray); 
    });  
}; 
+0

我试过使用此代码并在它的结尾我试图使用.clone循环访问数组,但是我得到了与控制台但在浏览器中相同的行为 – quechon

+0

“.clone”是什么意思? “.clone”不会出现在问题的'javascript'处。 – guest271314

+0

.clone jquery函数 – quechon