2015-07-20 63 views
0

我使用YUI的Datatable Column Formatter来格式化从AJAX请求返回的一些数据。这里的配置:AJAX请求返回加倍的对象列表 - YUI

var dataTable = new Y.DataTable(
{ 
    id: 'my-table', 
    height: '500px', 
    width: '500px' 
}); 
var columns = [{ 
     key: 'id', 
     label: 'ID' 
    }, { 
     label: 'Name', 
     formatter: function (o) { 
      console.log(o.data); 
      return o.data.name; 
     } 
    }, 
    { 
     key: 'department', 
     label: 'Department' 
    } 
]; 

function search(){ 
    dataSource = new Y.DataSource.IO({source: '/search' }); 
    dataSource.sendRequest({ 
     dataType: 'json', 
     on: { 
      success: function(e) { 
       response = e.data.responseText;    
       data = Y.JSON.parse(response); 
       dataTable.set('columns', columns); 
       dataTable.set('data', data.content); 
      }, 
      failure: function(e) { 
       //do stuff 
      } 
     }); 
    } 

我的表被填充细

enter image description here

,这是从控制台,如果我发起请求第二次返回

Object {id: 1, name: "Bob", department: 001} 
Object {id: 2, name: "Andy", department: 003} 

然而,对象数量返回双打

Object {id: 1, name: "Bob", department: 001} 
Object {id: 2, name: "Andy", department: 003} 
Object {id: 1, name: "Bob", department: 001} 
Object {id: 2, name: "Andy", department: 003} 

虽然数据仍然显示,但此重复功能会在其他位置中断功能。另外,不管请求启动的次数如何,只有返回的doubled列表。任何想法为什么对象被合并?

+0

尝试删除每个AJAX请求上的现有数据。 '$('#myTableID')。remove()'然后重新创建。看起来您的AJAX呼叫附加到现有内容 – ctwheels

+0

@ctwheels,这确实是正确的答案。如果你发布它,我会接受 –

+1

请注意,我必须将'dataTable'声明移动到'search'函数内部以使其工作 –

回答

1

尝试移除每个AJAX请求上的现有数据。 $('#myTableID').remove()然后重新创建。看起来您的AJAX呼叫附加到现有内容