Как установить данные AJAX для Datatable в JavaScript - PullRequest
0 голосов
/ 05 июля 2018

здесь проблема, когда я устанавливаю данные в datatable в javascript. Пожалуйста, обратитесь к приведенному ниже результату ajax, и я получаю эти результаты, используя карту java (коллекции java 8). И я пытаюсь установить ниже результат ajax в datatable.

Это мой результат json.

{
"LT20408":{"7788":56.5},
"LT20607":{"7899":785.0,"7452":134.0},
"LT20310":{"7788":986.0,"7156":122.0,"7452":562.0,"7899":152.25,"7451"=125.0,"7440"=134.25,"7450"=126.0,"7163"=524.0,"7195"=364.0},
"MG20902":{"7899"=785.0},
"MG20702":{"7899"=960.0,"7451"=93.25,"7163"=159.0},
"LT20503":{"7788"=54.52,"7156"=55.62,"7452"=452.25,"7451"=14.25,"7440"=5.36,"7163"=80.25, "7195"=105.25}
}

Мне нужно установить результаты ajax выше, как указано ниже.

-----------------------------------------------------------------------------------------------
|  Code     |   7788 |   7156 |   7452 |   7899  |   7451 |   7440 |   7450 |   7163 |   7195 |
-----------------------------------------------------------------------------------------------
|  LT20408  |  56.50 |   0.00 |   0.00 |   0.00  |   0.00 |   0.00 |   0.00 |   0.00 |   0.00 |
-----------------------------------------------------------------------------------------------
|  LT20607  |   0.00 |   0.00 | 134.00 |   0.00  |   0.00 |   0.00 |   0.00 |   0.00 |   0.00 |
-----------------------------------------------------------------------------------------------
|  LT20310  | 986.00 | 122.00 | 562.00 | 152.25  | 125.00 | 134.25 | 126.00 | 524.00 | 364.00 |
-----------------------------------------------------------------------------------------------
|  MG20902  |   0.00 |   0.00 |   0.00 | 785.00  |   0.00 |   0.00 |   0.00 |   0.00 |   0.00 |
-----------------------------------------------------------------------------------------------
|  MG20702  |   0.00 |   0.00 |   0.00 | 960.00  |  93.25 |   0.00 |   0.00 | 159.00 |   0.00 |
-----------------------------------------------------------------------------------------------
|  LT20503  |  54.52 |  55.62 | 452.25 |   0.00  |  14.25 |   5.36 |   0.00 |  80.25 | 105.25 |
-----------------------------------------------------------------------------------------------

, пожалуйста, дайте мне лучший способ установить результат выше json для моей таблицы данных.

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Это было весело и остановило меня сойти с ума, ожидая чего-то, следующее - это бесстыдно ES6, так что вы можете захотеть прогнать его через что-то вроде babel:

let d = `{
"LT20408":{"7788":56.5},
"LT20607":{"7899":785.0,"7452":134.0},
"LT20310":{"7788":986.0,"7156":122.0,"7452":562.0,"7899":152.25,"7451"=125.0,"7440"=134.25,"7450"=126.0,"7163"=524.0,"7195"=364.0},
"MG20902":{"7899"=785.0},
"MG20702":{"7899"=960.0,"7451"=93.25,"7163"=159.0},
"LT20503":{"7788"=54.52,"7156"=55.62,"7452"=452.25,"7451"=14.25,"7440"=5.36,"7163"=80.25, "7195"=105.25}
}`;

d = JSON.parse(d.replace(/\=/g, ":"));
const c = new Set(Object.keys(d).reduce((a,b)=>a.concat(Object.keys(d[b])),[]));
const data = [];
const columns = [{title: "Code", data: "code"}];
c.forEach(i => columns.push({title: i, data: i, defaultContent:""}));
columns.sort((a,b) => (a.title === "Code" || b.title === "Code") ? -1 : ~~a.title - ~~b.title);
for(e in d){
    d[e].code = e;
  data.push(d[e]);
}
const example = $("#example").DataTable({columns, data});

Рабочая JSFiddle здесь .

0 голосов
/ 05 июля 2018

Вам нужно отформатировать ваш JSON в более читаемый. Это то, что вам нужно.

var data={
"LT20408":{"7788":56.5},
"LT20607":{"7899":785.0,"7452":134.0},
"LT20310":{"7788":986.0,"7156":122.0,"7452":562.0,"7899":152.25,"7451":125.0,"7440":134.25,"7450":126.0,"7163":524.0,"7195":364.0},
"MG20902":{"7899":785.0},
"MG20702":{"7899":960.0,"7451":93.25,"7163":159.0},
}

var maxCodes=0,getKey,htmlText='';
for (var key in data) {
var tr=`<tr>
    <td>${key}</td>`;
	for(var k2 in data[key]){
  	tr=tr+`<td>${data[key][k2]}</td>`
  }
    
  tr=tr+`</tr>`;
  htmlText=htmlText+tr;
	if(Object.keys(data[key]).length>=maxCodes){
		maxCodes=Object.keys(data[key]).length;
		getKey=key;
	}
}
var tr="<tr><th>Code </th>";
for(var key in data[getKey]){
	tr=tr+`<th>${data[getKey][key]}</th>`;
}
 tr=tr+`</th>`;
$("#tableId").html(tr+htmlText)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table style="width:100%" id='tableId'>
   
</table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...