Как получить значения из сгенерированной php формы - PullRequest
0 голосов
/ 13 сентября 2011

У меня есть код для корзины покупок PHP, который выглядит следующим образом

if($cart->itemcount > 0) {
foreach($cart->get_contents() as $item) {
    echo "Code/ID :".$item['id']."<br/>";
    echo 'Quantity:<form method="post" action="cart.php"><input type="hidden" name="qtyid" id="qtyid" value="'.$item['id'].'"/><input type="submit" name="minus" id="minus" value="-"/>'.$item['qty'].'<input type="submit" name="plus" id="plus" value="+"/><br/></form>';
    echo "Price   :$".number_format($item['price'],2)."<br/>";
    echo "Info    :".$item['infos']."<br />";
    echo "Shipping :".$item['shipping']."<br />";
    echo "Subtotal :$".number_format($item['subtotal'],2)."<br />";
    echo '<form method="post" action="cart.php"><input type="hidden" name="removeid" id="removeid" value="'.$item['id'].'"/><input type="submit" name="remove" id="remove" value="Remove"/></form>';
    }
echo "---------------------<br>";
echo "total: $".number_format($cart->total,2);
} else {
echo "No items in cart";
}

Я использовал jQuery Ajax для публикации данных в своем php-скрипте, и все работает нормально, когда у меня есть один элемент:

        /********************************/
        /* Plus Item                   */
        /********************************/
        $('#plus').click(function()
            {
            var qtyid = $(this).val();
            var plus  = 'plus';

            $.ajax({
                url: 'cart.php',
                type: 'post',
                data: 'qtyid=' + qtyid + '&plus=' + plus,

                sucess: function (result) {
                    console.log('it worked');
                }

            })
            return false;
            })

        /********************************/
        /* Minus Item                   */
        /********************************/
        $('#minus').click(function()
            {
            var qtyid = $(this)).val();
            var minus  = 'minus';

            $.ajax({
                url: 'cart.php',
                type: 'post',
                data: 'qtyid=' + qtyid + '&minus=' + minus,

                sucess: function (result) {
                    console.log('it worked');
                }

            })
            return false;
            })

Однако у меня возникают проблемы, когда в корзине более одного товара, так как, я думаю, мой код не позволяет jQuery ajax найти, откуда он должен получить идентификатор, поскольку сгенерированный HTML-код содержит элементы с тот же ID.

</div>
<form method="post" action="cart.php">
    <input type="hidden" name="imgid" id="imgid" value="YWNoZZeXk2htZmJjaWds">
    <input type="hidden" name="imgalb" id="imgalb" value="YWNoZZeVnGdtZmJjamlj">
    <input type="hidden" name="qty" id="qty" value="1">
    <input type="submit" value="Add to cart" name="addtocart" id="addtocart">
</form>Code/ID :126264027457298<br/>
Quantity:
<form method="post" action="cart.php">
    <input type="hidden" name="qtyid" id="qtyid" value="126264027457298"/>
    <input type="submit" name="minus" id="minus" value="-"/>
    9
    <input type="submit" name="plus" id="plus" value="+"/>
    <br/>
</form>
Price   :$55.85
<br/>
Info    :
Titre<br />
Shipping :6.00<br />
Subtotal :$556.65<br />

<form method="post" action="cart.php">
        <input type="hidden" name="removeid" id="removeid" value="126264027457298"/>
        <input type="submit" name="remove" id="remove" value="Remove"/>
</form>Code/ID :126265084123859<br/>
Quantity:
<form method="post" action="cart.php">
    <input type="hidden" name="qtyid" id="qtyid" value="126265084123859"/>
    <input type="submit" name="minus" id="minus" value="-"/>
    2
    <input type="submit" name="plus" id="plus" value="+"/>
    <br/>
</form>
Price   :$25.85
<br/>
Info    :Boucles d'oreilles courtes «Conic»<br />
Shipping :6.00<br />
Subtotal :$63.70<br />
<form method="post" action="cart.php">
    <input type="hidden" name="removeid" id="removeid" value="126265084123859"/>
    <input type="submit" name="remove" id="remove" value="Remove"/>
</form>

---------------------<br>total: $620.35
</div>

Я часами пытался найти решение. Но я чувствую, что пришло время обратиться за помощью. Что я должен делать? Как мне изменить мой HTML, чтобы генерировать уникальные идентификаторы и найти способ получить идентификаторы из jQuery и PHP?

1 Ответ

0 голосов
/ 13 сентября 2011

Похоже, вам просто нужно получить значение qtyid, связанное с кнопками плюс / минус, которые вы нажимаете.Если это так, вы можете получить его, используя следующую строку:

var qtyid = $('#qtyid', $(this).parent('form')).val();

Таким образом, пример одного из ваших событий щелчка будет:

$('#plus').click(function()
{
    var qtyid = $('#qtyid', $(this).parent('form')).val();
    var plus  = 'plus';

    $.ajax({
        url: 'cart.php',
        type: 'post',
        data: 'qtyid=' + qtyid + '&plus=' + plus,
        success: function (result) {
            console.log('it worked');
        }
    });

    return false;

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