Динамический загрузочный экспорт таблицы в json (с вводом / выбором)
У меня есть динамическая таблица, которую мне нужно экспортировать в JSON.
<table class="table table-sm" id="tab_logic">
<thead>
<tr>
<th class="text-center"> # </th>
<th scope="col"> Product </th>
<th scope="col"> Qty </th>
<th scope="col"> Price </th>
<th scope="col"> Total </th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody>
<tr scope="row" id='addr0'>
<td> 1 </td>
<td>
<select class="form-control-sm">
<option>Item1</option>
</select>
</td>
<td><input type="number" name='qty[]' placeholder='Enter Qty' class="form-control-sm qty" step="0" min="0"/></td>
<td><input type="number" name='price[]' placeholder='Enter Unit Price' class="form-control-sm price" step="0.00" min="0"/></td>
<td><input type="number" name='total[]' placeholder='0.00' class="form-control-sm total" readonly/></td>
<td >
<button type="button" class="btn-sm btn-danger del">Del</button>
</td>
</tr>
</tbody>
</table>
я использовал метод экспорта из этого поста, чтобы убедиться, что он получает данные из ввода и выбирает объекты в таблице:
var tbl = $('#tab_logic tbody tr').map(function (idxRow, ele) {
//
// start building the retVal object
//
var retVal = {
id: ++idxRow
};
//
// for each cell
//
var $td = $(ele).find('td').map(function (idxCell, ele) {
var input = $(ele).find(':input');
//
// if cell contains an input or select....
//
if (input.length == 1) {
var attr = $('#tab_logic thead tr th').eq(idxCell).text();
retVal[attr] = input.val();
} else {
var attr = $('#tab_logic thead tr th').eq(idxCell).text();
retVal[attr] = $(ele).text();
}
});
return retVal;
}).get();
console.log(tbl);
alert(tbl);
когда я сообщаю результат, я получаю пустой объект. Что я делаю неправильно??
1 ответ
Решение
Не пустой объект, а alert
не может отобразить его, вам нужно преобразовать переменную в строку.
alert(JSON.stringify(tbl));