Есть ли такая вещь, как загрузка AJAX слишком долго? - PullRequest
0 голосов
/ 14 апреля 2019

Я хочу добавить функцию «добавить в корзину» для отправки в мою систему, однако, я думаю, что есть проблема с AJAX (я очень новичок в PHP). Это часть кода в cart.js:

$(".product-form").submit(function(e){
        var form_data = $(this).serialize();
        var button_content = $(this).find('button[type=submit]');
        button_content.html('Adding...'); 
        $.ajax({
            url: "manage_cart.php",
            type: "POST",
            dataType:"json",
            data: form_data
        }).done(function(data){         
            $("#cart-container").html(data.products);
            button_content.html('Add to Cart');             
        })
        }
        e.preventDefault();
    }); 

Ниже приведен фрагмент моего index.php, который я использую для вызова этой функции в качестве кнопки отправки типа:

<?php           
            $sql_query = "SELECT pizzaID, pizzaName, pizzaDesc, pizzaCode, Image, pizzaPrice FROM tbl_pizzas";  
            $resultset = mysqli_query($con, $sql_query) or die("database error:". mysqli_error($con));
            while( $row = mysqli_fetch_assoc($resultset) ) {
            ?>
            <li>
                <form class="product-form">
                    <h4><?php echo $row["pizzaName"]; ?></h4>
                    <div><img class="pizzaImage" src="local/<?php echo $row["Image"]; ?>"></div>
                    <div>Price : <?php echo $currency; echo $row["pizzaPrice"]; ?></div>
                    <div><?php echo $row["pizzaDesc"]; ?></div>
                    <div class="product-box">

                        <div>
                            Qty :
                            <select name="product_qty">
                            <option value="1">1</option>
                            <option value="2">2</option>
                            <option value="3">3</option>
                            <option value="4">4</option>
                            <option value="5">5</option>
                            </select>
                        </div>                  
                        <input name="pizzaCode" type="hidden" value="<?php echo $row["pizzaCode"]; ?>">
                        <button type="submit">Add to Cart</button>
                    </div>
                </form>
                </li>
            <?php } ?>

Моя проблема в том, что когда я нажимаю кнопку «Добавить в корзину», она остается как «Добавление ...», которое вы можете увидеть в manage_cart.php. Каким-то образом часть


        $.ajax({
            url: "manage_cart.php",
            type: "POST",
            dataType:"json",
            data: form_data
        }).done(function(data){         
            $("#cart-container").html(data.products);
            button_content.html('Add to Cart');             
        })
        }
        e.preventDefault();
    }); 

не похоже на выполнение.

Я пытался использовать session_write_close (); вместо session_start (); - когда я искал в Google, они сказали, что, вероятно, мой PHP загружается слишком долго из-за блокировки файла или чего-то еще - почему-то это не сработало.

добавление товаров в корзину в коде manage_cart.php ниже:

# add products in cart 
if(isset($_POST["pizzaCode"])) {
    foreach($_POST as $key => $value){
        $product[$key] = filter_var($value, FILTER_SANITIZE_STRING);
    }   
    $statement = $conn->prepare("SELECT pizzaName, pizzaPrice FROM tbl_pizzas WHERE pizzaCode=? LIMIT 1");
    $statement->bind_param('s', $product['pizzaCode']);
    $statement->execute();
    $statement->bind_result($pizzaName, $pizzaPrice);
    while($statement->fetch()){ 
        $product["pizzaName"] = $pizzaName;
        $product["pizzaPrice"] = $pizzaPrice;       
        if(isset($_SESSION["products"])){ 
            if(isset($_SESSION["products"][$product['pizzaCode']])) {               
                $_SESSION["products"][$product['pizzaCode']]["product_qty"] = $_SESSION["products"][$product['pizzaCode']]["product_qty"] + $_POST["product_qty"];              
            } else {
                $_SESSION["products"][$product['pizzaCode']] = $product;
            }           
        } else {
            $_SESSION["products"][$product['pizzaCode']] = $product;
        }   
    }   
    $total_product = count($_SESSION["products"]);
    die(json_encode(array('products'=>$total_product)));
}

РЕДАКТИРОВАТЬ: Я извиняюсь за неправильное наименование. Часть кода вызовов jQuery для manage_cart.php НЕ находится в manage_cart.php, но находится в javascript cart.js

2-е РЕДАКТИРОВАНИЕ: добавлены товары в код корзины manage_cart.php

...