как сериализовать всю таблицу и переменную на страницу php - PullRequest
0 голосов
/ 15 декабря 2018

Я создаю систему управления запасами для своих продаж.я могу сериализовать полную таблицу успешно, у меня есть одна проблема, у меня есть столбец sell_price в таблице, столбец розничных цен в таблице отсутствует.,Я отправляю всю запись на страницу loading_add.php через ajex.что я пробовал до сих пор, я написал это ниже.как отправить розничную цену на страницу loading_add.php.

retail_price : retail_price 

 var table_data = [];
    $('#product_list tbody tr').each(function(row,tr)
    {
        var sub = {
            'product_id' : $(tr).find('td:eq(1)').text(),
            'cat_id' : $(tr).find('td:eq(2)').text(),
            'product_name' : $(tr).find('td:eq(3)').text(),

              retail_price : retail_price

            'sell_price' : $(tr).find('td:eq(4)').text(),
            'qty' : $(tr).find('td:eq(5)').text(),
            'total_cost' : $(tr).find('td:eq(6)').text(),

        };
        table_data.push(sub);
    });

 $.ajax({
        type : "POST",
        url: '../php/product/loading_add.php',
        dataType: 'JSON',

        data: {data:table_data},

1 Ответ

0 голосов
/ 15 декабря 2018

Одним из способов является использование скрытого ввода , если вы не хотите отображать данные для пользователя, но они вам нужны .

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

, поэтому после выполнения запроса выбора 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'),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...