好的,所以我想首先对不起,如果之前已经有人问过这个问题。不过,我似乎无法在“问到的问题”部分中找到它,并且花了数小时来寻找所需的东西。

因此开始。我正在从数据库->产品中提取表中的数据行。然后将它们添加到购物车。我知道如何在PHP中执行此操作,但是我是JavaScript和Ajax的新手。我的代码确实可以正常工作,可以在其中提交一个表单以添加到数据库中,但是在第一个表单之后它就不起作用了。

我也将包括所有代码,但是我只需要帮助弄清楚如何将每个单独的项目添加到购物车中。从逻辑上来说,这对我来说似乎很简单,但我无法找出正确的方法来完成此任务并感谢您的帮助!

这是显示数据库产品页面的代码。

//*script*//
    <script type="text/javascript">
            $(document).ready(function() {


                $("#FormSubmitAddToCart").click(function (e) {
                        e.preventDefault();
                        if($("#qtyArea").val()==='0')
                        {
                            alert("Please enter a quantity!");
                            return false;
                        }

                        $("#FormSubmitAddToCart").hide(); //hide submit button
                        $("#LoadingImage").show(); //show loading image

                        var id = 'id='+ $("#idArea").val();
                        var qty = 'qty='+ $("#qtyArea").val();
                        var myData = id+'&'+qty;
                        //alert(myData);
                        jQuery.ajax({
                        type: "POST", // HTTP method POST or GET
                        url: "response.php", //Where to make Ajax calls
                        dataType:"text", // Data type, HTML, json etc.
                        data:myData, //Form variables
                        success:function(response){
                            $("#responds").append(response);
                            $("#idArea").val(''); //empty text field on successful
                            $("#qtyArea").val(''); //empty text field on successful
                            $("#FormSubmitAddToCart").show(); //show submit button
                            $("#LoadingImage").hide(); //hide loading image

                        },
                        error:function (xhr, ajaxOptions, thrownError){
                            $("#FormSubmitAddToCart").show(); //show submit button
                            $("#LoadingImage").hide(); //hide loading image
                            alert(thrownError);
                        }
                        });
                });
    </script>

//*selects products from database*//
<?php
include_once("config.php");

$results = $mysqli->query("SELECT * FROM products");
while($row = $results->fetch_assoc()) {
    echo '<li id="item_'.$row["id"].'">
            <div class="del_wrapper">
                '.$row["name"].' - $'.$row["price"].'
                <input type="hidden" id="idArea" value="'.$row["id"].'">
                <input type="number" id="qtyArea" value="0">
                <button id="FormSubmitAddToCart">Add to Cart</button>
            </div>
        </li><br />';
}

?>


我的响应页面正在工作,并将第一个表单数据发布到购物车表。

我知道我需要某种循环或方法来标识使用该按钮提交的表单,但是不确定如何执行此操作。有什么建议么?只是想让您知道,我会在我的东西工作后确保其安全。谢谢! :D



************************这些行下方的固定代码******************* *******



这是现在对我有用的完整更新。

脚本代码

<script type="text/javascript">
        $(document).ready(function(){
            $('[id^=FormSubmitAddToCart]').click(function(){
            // now this is your product id, and now you should
                var p_id= $(this).attr('id').replace('FormSubmitAddToCart-', '');

            // this is  your quantity
                var p_qty = $('#qtyArea-'+p_id).val();

            // + now you know the product id and quantity, so you should handle the rest

                var myData = 'id='+p_id+'&qty='+p_qty;

                alert(myData);
            //  throw new Error("Something went badly wrong!");

                jQuery.ajax({
                type: "POST", // HTTP method POST or GET
                url: "response.php", //Where to make Ajax calls
                dataType:"text", // Data type, HTML, json etc.
                data:myData, //Form variables
                success:function(response){
                    $("#responds").append(response);
                    $("#idArea").val(''); //empty text field on successful
                    $("#qtyArea").val(''); //empty text field on successful
                    $("#FormSubmitAddToCart").show(); //show submit button
                    $("#LoadingImage").hide(); //hide loading image

                },
                error:function (xhr, ajaxOptions, thrownError){
                    $("#FormSubmitAddToCart").show(); //show submit button
                    $("#LoadingImage").hide(); //hide loading image
                    alert(thrownError);
                }
                });

            })
        });
    </script>


提交的表格代码:

<?php
    include_once("config.php");

    $results = $mysqli->query("SELECT * FROM products");
    while($row = $results->fetch_assoc()) {
        echo '<li id="item_'.$row["id"].'">
                <div class="del_wrapper">
                    '.$row["name"].' - $'.$row["price"].'

                    <input type="hidden" id="idArea-'.$row["id"].'" value="'.$row["id"].'"/>
                    <input type="number" id="qtyArea-'.$row["id"].'" value="0">
                    <button id="FormSubmitAddToCart-'.$row["id"].'">Add to Cart</button>
                </div>
            </li><br />';
    }

?>


response.php页面

<?php
//include db configuration file
include_once("config.php");

if(isset($_POST["qty"]) && ($_POST["qty"] != 0) ) {
    //check $_POST["content_txt"] is not empty

    //sanitize post value, PHP filter FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH Strip tags, encode special characters.
    $MID = "43";
    $ID = $_POST["id"];
    $QTY = $_POST["qty"];

    echo $ID.$QTY;

    // Insert sanitize string in record
    //$insert_row = $mysqli->query("INSERT INTO add_delete_record(content,qty) VALUES('".$contentToSave.",".$QTY."')");

    $insert_row = $mysqli->prepare('INSERT INTO orders(members_id, product_id, quantity) VALUES (?,?,?)');
    $insert_row->bind_param('iii', $MID, $ID, $QTY);
    $insert_row->execute();
    $insert_row->close();

    if($insert_row)
    {
         //Record was successfully inserted, respond result back to index page
          $my_id = $mysqli->insert_id; //Get ID of last inserted row from MySQL
          echo '<li id="item_'.$my_id.'">';
          echo '<div class="del_wrapper"><a href="#" class="del_button" id="del-'.$my_id.'">';
          echo '<img src="images/icon_del.gif" border="0" />';
          echo '</a></div>';
          echo $ID.'-'.$QTY.'</li>';
          $mysqli->close(); //close db connection

    }else{

        //header('HTTP/1.1 500 '.mysql_error()); //display sql errors.. must not output sql errors in live mode.
        header('HTTP/1.1 500 Looks like mysql error, could not insert record!');
        exit();
    }

}
?>

最佳答案

您的html应该看起来像这样。
            

            <input type="hidden" id="idArea-'.$row["id"].'" value="'.$row["id"].'">
                            <input type="number" id="qtyArea-'.$row["id"].'" value="0">

                            // + javascript

                            $(document).ready(function(){
                                $('[id^=FormSubmitAddToCart]').click(function(){
                                // now this is your product id, and now you should
                                    var p_id= $(this).attr('id').replace('FormSubmitAddToCart-', '');

                               // this is  your quantity
                                    var p_qty = $('#qtyArea-'+p_id).val();

                                    // + now you know the product id and quantity, so you should handle the rest

                                })
                            });

10-07 19:02
查看更多