AJAX加载时间是否太长?

时间:2019-04-14 11:58:16

标签: php ajax find cart

我想添加到购物车功能作为提交到我的系统的方法,但是我认为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中

第二次编辑:将添加产品添加到manage_cart.php的购物车代码

0 个答案:

没有答案