【问题标题】:Compare two variables with generated numbers将两个变量与生成的数字进行比较
【发布时间】:2019-02-09 19:26:06
【问题描述】:

目前我正在学习 PHP 的曲线,并且第一次尝试向我的 PHP 脚本发出 AJAX 请求。出于学习目的,我在自己的书面商店购买了购物车,它为每个位置生成具有相同“data-id”属性的按钮和输入字段。当然,输入字段具有当前产品数量的“价值”属性。

代码:

jquery:

$(document).ready(function() {
    $(".btn").click(function () {
        var id = $(this).attr("data-id");
        var idInput = $(".field").attr("data-id");
        var value = $(".field").attr("value");
        if (id === idInput) {
            $.post("/cart/addAjax/" + id, {}, function (data) {
                $("#cart-count").html(data);
            });
            $.post("/cart/addAjax/" + value, {});
            return false;
        } else {}
    });
});

PHP生成的HTML输入示例:

            <input class="field" data-id="3" type="number" value="23">
            <button class="btn" data-id="3">Quantity</button>

            <input class="field" data-id="14" type="number" value="3">
            <button class="btn" data-id="14">Quantity</button>

            <input class="field" data-id="17" type="number" value="2">
            <button class="btn" data-id="17">Quantity</button>

            <input class="field" data-id="18" type="number" value="8">
            <button class="btn" data-id="18">Quantity</button>

            <input class="field" data-id="19" type="number" value="10">
            <button class="btn" data-id="19">Quantity</button>

我希望 Jquery 脚本比较输入/按钮“data-id”属性并将选定“data-id”属性请求的“值”发送到 PHP 端,但不知道如何告诉脚本从中获取“值”选择“data-id”,猜猜它的 POST 仅针对购物车中第一个生成的产品成功的原因,因为其余产品脚本不起作用。有人可以启发我如何实现这一目标吗?感谢您的建议。

【问题讨论】:

    标签: javascript jquery ajax


    【解决方案1】:

    您需要更好地构建您的 html。

    我对 html 进行了一些更改,并将每个 btnfield 放在一个 div 下。

    这将使通过btn click 找到所选输入更容易。

    阅读评论以了解。

    $(document).ready(function() {
        $(".btn").click(function () {
            var id = $(this).attr("data-id");
            // now go to the selected btn Parent, and then find the .field
            // there you are sure its the right field becouse both the button       
            // and the field is containe under one div{Parent}
            var idInput = $(this).parent().find(".field")
           console.clear();
           console.log("you Selected id " +id + " and its value is " + idInput.val())
        });
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div>
    
                <input class="field" data-id="3" type="number" value="23">
                <button class="btn" data-id="3">Quantity</button>
      </div> 
      <div>
                <input class="field" data-id="14" type="number" value="3">
                <button class="btn" data-id="14">Quantity</button>
       </div>
       <div>
                <input class="field" data-id="17" type="number" value="2">
                <button class="btn" data-id="17">Quantity</button>
        </div>
        <div>
                <input class="field" data-id="18" type="number" value="8">
                <button class="btn" data-id="18">Quantity</button>
       <div>
                <input class="field" data-id="19" type="number" value="10">
                <button class="btn" data-id="19">Quantity</button>
       </div>

    【讨论】:

    • 这正是我潜伏的目的,谢谢。但由于某种原因,我无法在我的项目上完成这项工作,你能看看我的笔吗? codepen.io/RedEclipse/pen/aXQYgb
    • 那是我的愚蠢或浏览器故障,再次感谢
    【解决方案2】:

    $('button').on('click',function(){
      var data = $(this).data('id');
      var url = 'your php file';
      $.post(url,data,function(rdata){
        //do whatever yo want with returned data
      });
    });

    【讨论】:

    • 您忘记发送输入字段的值
    猜你喜欢
    • 2022-01-15
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    相关资源
    最近更新 更多