Сделайте список пожеланий динамичным для каждого товара / статьи

#javascript #php #jquery #ajax #arraylist

#javascript #php #jquery #ajax #arraylist

Вопрос:

ПРИВЕТ, у меня небольшая проблема, у меня есть скрипт списка желаний, который добавляет предметы из магазина в сеанс и сохраняет их, но когда я нажимаю на список, он добавляет только первый элемент, как сделать его динамичным, чтобы каждый щелчок по списку желаний был для отдельного элемента в магазине

моя структура статьи, onclick wlbutton1 или wlbutton2 он должен добавить статью с id1 или 2 в список пожеланий:

     echo '<div class="span3 filter--'.$obj->product_prop1.'" data-price="'.substr($obj->price, 0, -3) . '" data-popularity="3" data-size="s|m|xl" data-color="pink|orange" data-brand="'.$obj->product_brand.'">'; 
        echo '<div class="product">'; 
        echo '<div class="product-img featured">'; 
        echo '<form method="post" action="../cart_update.php">';
        echo '<div class="picture"><img src="images/'.$obj->product_img_name.'">';
        echo '<div class="img-overlay"><button class="add_to_cart btn more btn-primary">Kaufen</button><a href="#" class="btn buy btn-danger" id="producturl'.$obj->id.'">...mehr</a></div>';
        echo '</div>';
        echo '</div>';
        echo '<div id="result"></div>';
        echo '<div class="main-titles"><h4 class="title">'.$currency.$obj->price.'</h4>';
        echo '<h5 class="no-margin isotope--title" id="product'.$obj->id.'">'.$obj->product_name.'</h5>';
        echo '<p class="no-margin pacifico" style="position: absolute;right: 10px;top: 5px; text-transform: capitalize;">'.$obj->product_brand.'</p>';
        echo '<p class="no-margin" style="position: absolute;right: 10px;top: 25px;"><a class="wl-button'.$obj->id.'"><i class="icon-gift"></i></a></p>';
        echo '</div>';
        echo '<p class="desc">'.substr($obj->product_desc, 0, 160) . '...</p>';
        echo '<input type="hidden" name="product_qty" value="1" />';
        echo '<input type="hidden" name="product_code" value="'.$obj->product_code.'" />';
        echo '<input type="hidden" name="type" value="add" />';
        echo '<input type="hidden" name="return_url" value="'.$current_url.'" />';
        echo '</form>';
        echo '</div>';
        echo '</div>';
  

Мой код Jquery как сделать его динамичным и индивидуальным для каждого элемента?:

 $(".wl-button").click(function() {
    var wlproduct = $('#product').text();
    var wlproducturl = $('#producturl').attr('href');
    $.ajax({
        type : "POST",
        url : "../assets/wlscript.php",
        data : { wlproduct : wlproduct, wlproducturl : wlproducturl },
        success : function(data) { 
        $('div#result').text('You added ' wlproducturl ' ' wlproduct ''s to your wishlist.');
        }
    }); 
}); 
  

Комментарии:

1. Я не вижу ни одного элемента с идентификатором «product» или «producturl». Точно так же я не нашел ни одного элемента с классом CSS «wl-button». Может быть, вам следует написать что-то вроде: $('h5[id^='product']).text(); чтобы он работал на всех H5 с идентификатором, который начинается с ‘product’. И не могли бы вы, пожалуйста, переписать свой HTML-код без кода PHP? (с конкретным примером)

2. это должно быть сделано динамически, например, я не хочу иметь wl-button1, wl-button2 и т. Д. Возможно, Добавьте число после идентификатора динамически в jquery с помощью $this??

3. Класс CSS не должен быть уникальным в отличие от идентификатора. И идентификатор никогда не является обязательным. Вы можете обойти это для своего скрипта: вы можете выполнить поиск по кнопке действия, чтобы найти все необходимые данные. Я постараюсь показать вам пример кода.

Ответ №1:

Вот пример того, как вы можете найти данные, необходимые для добавления вашей статьи. Сначала пример HTML :

 <div class="products">
    <form>
        <p>
            <!-- Fist article -->
            <span>Article 1</span>
            <!-- A name construct so that I can easilly find in which iteration of the loop I am -->
            <input type="hidden" name="article[0].id" value="1" />
            <input type="hidden" name="article[0].name" value="article1" />
            <button class="addButton">Add article</button>
        </p>
        <p>
            <!-- Second article -->
            <span>Article 2</span>
            <input type="hidden" name="article[1].id" value="2" />
            <input type="hidden" name="article[1].name" value="article2" />
            <button class="addButton">Add article</button>
        </p>
        <!-- … others articles -->
    </form>
</div>
  

И часть Javascript :

 $(document).ready(function(){
    $(".addButton").on("click", function(event){
        event.preventDefault();
        var button = $(this);
        var parent = button.parent(); // We need to find the container in which to seach our fields.
        var idArticle = parent.find("input[name$='.id']").val(); // Find the ID
        var nameArticle = parent.find("input[name$='.name']").val(); // Find ather data
        alert("Add article with id = "   idArticle   " and name = "   nameArticle);
        // Next step is the ajax method to call the server with the correct data. 
    });
});
  

Работая таким образом, вы можете отправить на свой сервер данные, необходимые для добавления статьи в свой список пожеланий.

Вот ссылка на пример скрипки JS.

В этом примере вы можете увидеть, как обойти содержимое HTML с помощью кнопки, чтобы найти входные данные.

Вы можете найти больше о «обходе дерева» с помощью jQuery API.

Комментарии:

1. великий человек, которого я знаю, находит элементы и может отправлять их в мой php-файл, который создает сеанс, но теперь у меня возникает другая проблема каждый раз, когда он добавляет статью, он стирает мне сессию и статью раньше, как я могу это исправить, вот мой wlscript.php <?php session_start(); $p = trim($_POST['wlproduct']); $q = trim($_POST['wlproducturl']); $orders[$p] = $q; $_SESSION['orders'] = $orders; ?>

2. Извините: я знаю только основы PHP. Я не смогу вам в этом помочь.