【问题标题】:Make Wish List Dynamic for each item/ article为每件商品/文章制作动态愿望清单
【发布时间】:2014-08-12 17:03:45
【问题描述】:

嗨,我遇到了一个小问题,我有一个愿望清单脚本,它将商店中的物品添加到会话中并保存它们,但是当我点击哪个列表时,他只添加了第一个项目如何男性它是动态的,每个愿望清单点击都是对于商店中的单个商品

我的文章结构,onclick wlbutton1 或 wlbutton2 他应该将id1或2的文章添加到wishlist:

    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.');
        }
    }); 
}); 

【问题讨论】:

  • 我没有看到任何 ID 为“product”或“producturl”的元素。同样,我没有找到任何具有 CSS 类“wl-button”的元素。也许你应该写一些类似的东西:$('h5[id^='product']).text();,这样它就可以在 ID 以“产品”开头的所有 H5 上工作。您能否在没有 PHP 代码的情况下重写您的 HTML 代码? (有一个具体的例子)
  • 应该像我一样动态地让 wl-button1、wl-button2 等在 jquery 中用 $this 动态地在 id 后面添加一个数字??
  • CSS 类不需要是唯一的,不像 ID。身份证从来都不是强制性的。你可以为你的脚本解决这个问题:你可以搜索你的操作按钮来找到你需要的所有数据。我将尝试向您展示示例代码。

标签: javascript php jquery ajax arraylist


【解决方案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 Fiddle example的链接。

在此示例中,您可以了解如何绕过按钮中的 HTML 内容来查找输入。

您可以通过jQuery API 找到有关“树遍历”的更多信息。

【讨论】:

  • 伟大的人,我知道找到元素并可以将它们发送到我的 php 文件,这使得会话但现在我每次添加文章时都会遇到另一个问题,他会在我如何修复之前删除我的会话和文章这是我的 wlscript.php &lt;?php session_start(); $p = trim($_POST['wlproduct']); $q = trim($_POST['wlproducturl']); $orders[$p] = $q; $_SESSION['orders'] = $orders; ?&gt;
  • 对不起:我只知道 PHP 的基础知识。在这方面我无法为您提供帮助。
猜你喜欢
  • 2022-01-21
  • 2016-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
相关资源
最近更新 更多