Данные отправляются в AjAX только при двойном нажатии кнопки - PullRequest
0 голосов
/ 09 декабря 2018

Мой сценарий AJAX и PHP все в порядке, он работает как надо.Моя единственная проблема заключается в том, что функция оповещения срабатывает только при двойном нажатии кнопки.РЕДАКТИРОВАТЬ: при первом щелчке на вкладке сети отображаются все данные, которые должны быть отправлены с кодом: 200

Вот код, который я отправляю в AJAX

<input type="hidden" id="name<?=$product['id'];?>" name="hidden_name" 
value="<?=$product['title'];?>">

<input type="hidden" id="price<?=$product['id'];?>" name="hidden_price" 
class="hidden_price" value="<?=$product['price'];?>">

Вот вход, который запускает код JavaScript

<input type="button" class="button" name="cartbtn" id="<?=$product['id'];?>" 
value="Quick Add-to-Cart">

Вот код JavaScript, который отправляет данные от входных данных в скрипт PHP:

<script type="text/javascript">


 $(document).ready(function(data) {

        $('.button').click(function() {

                var product_id = $(this).attr('id');
                var product_name = $('#name' + product_id).val();
                var product_price = $('#price' + product_id).val();
                var action = "add";

                    console.log(product_id);


                    $.ajax({
                        url: "../PHP_Scripts/quick_cart.php",
                        method: "POST",
                        dataType: "json",
                        data: {

                            product_id: product_id,
                            product_name: product_name,
                            product_price: product_price,
                            action: action

                        },
                        success: function(data) {
                            $('#order_table').html(data.order_table);
                            $('.badge').text(data.cart_item);
                            alert("Procuct added to cart");
                        }
                    });
                });
            });
    </script>

Может кто-нибудь пролить свет начто здесь происходит?Я хочу, чтобы цена товара отправлялась в корзину при нажатии кнопки только один раз, а не дважды.

HTTP-код равен 200;нет никаких проблем с фактической отправкой данных, только то, что данные отправляются только с двойного щелчка, а не с одного щелчка.Я знаю это, потому что предупреждение срабатывает только при двойном щелчке.

РЕДАКТИРОВАТЬ: ЗДЕСЬ МОЙ КОД КОРЗИНЫ:

if (isset($_POST["product_id"])) {

$order_table = '';
$message = '';

if ($_POST["action"] == "add") {

    if (isset($_SESSION['shopping_cart'])) {

        $is_available = 0;

        foreach ($_SESSION['shopping_cart'] as $key => $value) {

            if ($_SESSION['shopping_cart'][$key]['product_id'] == 
            $_POST['product_id']) {

                $is_available++;

                $_SESSION['shopping_cart'][$key]['product_quantity'] = 
                $_SESSION['shopping_cart'][$key]['product_quantity'] + 
                $_POST['product_quantity'];
            }

        }

        if ($is_available < 1) {

            $item_array = array(

                'product_id'        => $_POST['product_id'],
                'product_name'      => $_POST['product_name'],
                'product_price'     => $_POST['product_price'],
                'product_quantity'  => $_POST['product_quantity'],
                'product_image'     => $_POST['product_image']

            );

            $_SESSION['shopping_cart'][] = $item_array;

        }

    }

    else{

        $item_array = array(

                'product_id'        => $_POST['product_id'],
                'product_name'      => $_POST['product_name'],
                'product_price'     => $_POST['product_price'],
                'product_quantity'  => $_POST['product_quantity'],
                'product_image'     => $_POST['product_image']

            );

            $_SESSION['shopping_cart'][] = $item_array;

    }

    $order_table .= '

    <table class="table table-bordered">
        <tr style="color: #000;">
            <th width="40%">Product Name</th>
            <th width="10%">Quantity</th>
            <th width="20%">Price</th>
            <th width="15%">Total</th>
            <th width="5%">Action</th>
        </tr>


    ';

    if (!empty($_SESSION['shopping_cart'])) {

        $total = 0;


        foreach ($_SESSION['shopping_cart'] as $key => $value) {

            $order_table .= '

            <tr style="color: #000;">
                <td>'.$value['product_name'].'</td>
                <td>'.$value['product_quantity'].'</td>
                <td align="right">£'.$value['product_price'].'</td>
                <td align="right">£'.number_format($value['product_price'] * 
                 $value['product_quantity'], 2).'</td>
                <td><button name="delete" class="delete" 
                 id="'.$value['product_id'].'">Remove</button></td>
            </tr>

            ';

            $total = $total + ($value['product_price'] * 
            $value['product_quantity']);

        }

        $order_table .= '

        <tr style="color: #000;">
          <td colspan="3" align="right">Total</td>
          <td align="right">£'.number_format($total, 2).'</td>
          <td></td>
        </tr>

        ';

    }

    $order_table .= '</table>';
    $output = array(

        'order_table'     => $order_table,
        'cart_item'       => count($_SESSION['shopping_cart'])

    );
    echo json_encode($output);
 }
}

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...