Я использую YUI's 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
}
});
}
Моя таблица получает заселена штраф
И это возвращается из консоли
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}
Пока данные все еще отображаются, это дублирование нарушает функциональность в другом месте. Кроме того, независимо от того, сколько раз запрос запускается, возвращается только удвоенный список. Любая идея, почему объекты объединяются?
Попробуйте удалить существующие данные по каждому запросу AJAX. '$ ('# myTableID'). remove()' и затем воссоздать. Кажется, ваш вызов AJAX добавляет к существующему контенту – ctwheels
@ctwheels, который действительно был правильным ответом. Если вы опубликуете его, я соглашусь –
Обратите внимание, что мне пришлось переместить декларацию 'dataTable' внутри функции' search', чтобы заставить ее работать –