2016-02-24 5 views
0

Это ответ моего сервера.Как использовать этот json с угловыми данными

{ 
"status": "success", 
"data": [{ 
    "id": null, 
    "reportType": "Total Voucher Report", 
    "reportModule": "Vouchers", 
    "reportData": [{ 
     "id": "1", 
     "voucherPackId": "2", 
     "serialNumber": "0", 
     "status": "Free", 
     "isBlocked": "N", 
     "voucherPin": "0", 
     "buyDate": null, 
     "redeemDate": null, 
     "phoneNumber": null, 
     "statusCode": null, 
     "identifier": "MCM0007532", 
     "merchantName": "test1", 
     "voucherName": "fddf", 
     "expiryDate": "2016-02-24 00:00:00", 
     "dealCategory": "Hotels \u0026 Travel", 
     "shortDescription": "xvxv", 
     "voucherWorth": "33.00" 
    }, { 
     "id": "2", 
     "voucherPackId": "2", 
     "serialNumber": "0", 
     "status": "Free", 
     "isBlocked": "N", 
     "voucherPin": "0", 
     "buyDate": null, 
     "redeemDate": null, 
     "phoneNumber": null, 
     "statusCode": null, 
     "identifier": "MCM0007532", 
     "merchantName": "test1", 
     "voucherName": "fddf", 
     "expiryDate": "2016-02-24 00:00:00", 
     "dealCategory": "Hotels \u0026 Travel", 
     "shortDescription": "xvxv", 
     "voucherWorth": "33.00" 
    }, { 
     "id": "3", 
     "voucherPackId": "2", 
     "serialNumber": "0", 
     "status": "Free", 
     "isBlocked": "N", 
     "voucherPin": "0", 
     "buyDate": null, 
     "redeemDate": null, 
     "phoneNumber": null, 
     "statusCode": null, 
     "identifier": "MCM0007532", 
     "merchantName": "test1", 
     "voucherName": "fddf", 
     "expiryDate": "2016-02-24 00:00:00", 
     "dealCategory": "Hotels \u0026 Travel", 
     "shortDescription": "xvxv", 
     "voucherWorth": "33.00" 
    }] 
}], 
"message": null} 

Я использовал его как,

vm.dtOptions = DTOptionsBuilder 
     .newOptions() 
     .withOption('ajax', { 
      url: config.base_url + 'report/voucher?module=Vouchers&type=Total Voucher Report&merchant=1', 
      type: 'POST', 
      dataSrc: 'data.data[0].reportData[0]', 
     }) 
     .withOption('processing', true) 
     .withOption('serverSide', true) 
     .withBootstrap() 
     .withPaginationType('full_numbers'); 

Это говорит неверный ответ в формате JSON. Цените свою любезную помощь. Debug результат: http://debug.datatables.net/urizon

+0

Отключенный результат. http://debug.datatables.net/urizon – Namal

ответ

0

Если использовать анализатор ваш получите ошибку: SyntaxError: JSON.parse: конец данных после того, как значение свойства в объекте в строке 63 столбца 16 данных в формате JSON. Итак, да ваш JSON недействителен! Просто добавьте} в строку списка. Потому что все скобки должны быть закрыты.

+0

Не такая ошибка. Все скобки уже закрыты. – Namal

0

Убедитесь, что ответ JSON имеет заголовок Content-Type: application/json, в противном случае он может не обрабатываться правильно.

+0

У меня есть тип контента. – Namal

1

Используйте следующее значение для опции dataSrc: data[0].reportData, как показано ниже. Также вам необходимо удалить serverSide и processing, так как ваши данные не имеют правильной структуры для режима обработки на стороне сервера.

Вам также необходимо определить структуру столбцов, так как вы используете массив объектов в качестве источника данных.

vm.dtOptions = DTOptionsBuilder 
     .newOptions() 
     .withOption('ajax', { 
      url: config.base_url + 'report/voucher?module=Vouchers&type=Total Voucher Report&merchant=1', 
      type: 'POST', 
      dataSrc: 'data[0].reportData' 
     }) 
     .withBootstrap() 
     .withPaginationType('full_numbers'); 

vm.dtColumns = [ 
    /* List data properties for each column in the table. */ 
    DTColumnBuilder.newColumn('id'), 
    DTColumnBuilder.newColumn('voucherPackId'), 
    DTColumnBuilder.newColumn('serialNumber'), 
    DTColumnBuilder.newColumn('status')   
]; 
+0

Да, однако, «по книге» угловое обозначение данных будет «.fromSource (config.base_url +« report/voucher? Module = Vouchers & type = Total Voucher Report & merchant = 1 »). WithDataProp ('data [0] .reportData '); ' – davidkonrad

+0

@davidkonrad, Спасибо за примечание. Похоже, что оба могут быть использованы, см. [Пример обработки на стороне сервера] (http://l-lin.github.io/angular-datatables/#/serverSideProcessing), особенно если OP хочет использовать метод POST. –

+0

Да, они просто сокращены для '.withOption ('ajax'' и т. Д. - никаких проблем с вашим предложением вообще. Я не уверен, что OP фактически _wants_ использовать' type:' POST'', как бы это ни было использовать в этой настройке? Большинство времени 'type:« POST », похоже, является результатом программ копирования кустов/грузов, не по какой-либо причине. – davidkonrad

Смежные вопросы