Одним из способов является использование скрытого ввода , если вы не хотите отображать данные для пользователя, но они вам нужны .
, например, в вашем продукте.В листинге таблицы вы можете получить скрытый ввод розничной цены, когда вам это нужно, но вам не нужно отображать ее пользователям.
, поэтому после выполнения запроса выбора mysql вы можете получить данные из вашей таблицы как:
<table id="product_list" class="table table-bordered table-striped">
<thead>
<tr>
<th>Id</th>
<th>Category</th>
<th>product Name</th>
<th>price</th>
<th>quantity</th>
<th>total</th>
</tr>
</thead>
<tbody>
<?php foreach ($products as $row){ ?>
<tr>
<td><?php echo $row['id']; ?></td>
<td><?php echo $row['cat_id']; ?></td>
<td><?php echo $row['product_name'] ?></td>
<!-- below in sell price td we will take hidden input for retail price -->
<td><input type="hidden" class="retail_price" value="<?php echo $row['retail_price'] ?>"><?php echo $row['sell_price'] ?></td>
<td><?php echo $row['quantity'] ?></td>
<td><?php echo $row['total_cost']; //or price * quantity ?></td>
</tr>
<?php } ?>
</tbody>
</table>
И в вашем скрипте вы ошиблись как $(tr).find('td:eq(1)').text()
,
, если вы хотите получить первый td, тогда вы должны использовать $(tr).find('td:eq(0)').text()
, потому что здесь td
это массив элементов и в массиве index
всегда начинайте с 0
.
, поэтому ваш сценарий должен выглядеть следующим образом:
$(function () {
var table_data = [];
$('#product_list tbody tr').each(function (row, tr)
{
var sub =
{
'product_id': $(tr).find('td:eq(0)').text(),
'cat_id': $(tr).find('td:eq(1)').text(),
'product_name': $(tr).find('td:eq(2)').text(),
'sell_price': $(tr).find('td:eq(3)').text(),
'retail_price': $(tr).find('td:eq(3)').find('.retail_price').val(),
'qty': $(tr).find('td:eq(4)').text(),
'total_cost': $(tr).find('td:eq(5)').text(),
};
table_data.push(sub);
});
//here you can fire ajax request for adding record
});
Другой способ - взять атрибут данных для необходимого значения
в том же примере, что и выше, вы можете принять атрибут данных в вашем td как
<td data-retail_price="<?php echo $row['retail_price'] ?>"><?php echo $row['sell_price'] ?></td>
, а в вашем скрипте вы можете получить значение атрибута данных, как в том же скрипте, как указано выше:
'retail_price': $(tr).find('td:eq(3)').data('retail_price'),