【问题标题】:jquery is running multiple timesjquery 多次运行
【发布时间】:2018-06-07 17:15:38
【问题描述】:

我正在发送一个 jquery ajax 请求并获取一些 js 代码作为响应。我将响应放在 div $("div").html(data) 中并使用 $("div").find("script").each(function(){ eval($(this).text()); }); 执行脚本 但我不知道为什么脚本运行两次。 这是我发送 ajax 请求广告处理响应的代码

$.post("ajax-req-handler.php",
                {
                    key: "barcode-input-for-sale-return",
                    barcodeVal: $('.product-searchbar').val(),
                    soldQty: 1,
                    soldDisc: pickDisc,
                    soldPrice: pickPrice,
                    custNum: contNum,
                    saleDate: $(".sale-date").val()
                },
                function( data ){
                    $(".exec-script").html(data);
                    $(".exec-script").find("script").each(function(){
                        eval($(this).text());
                    });
                });

这里是我的ajax-req-handler.php 文件

            <script> 
                function deleteIfMatches(array, match){
                    array.some((ele)=>{ ele.indexOf(match) >= 0 ? array.splice(array.indexOf(ele),1): null });
                    return array;
                }
                var barIdFr = '<?php echo $barcode_id; ?>';
                var qtyToRetFr = <?php echo $quantity; ?>;
                var prodStrFr = '<?php echo $prod; ?>';
                var discountFr = '<?php echo $disc; ?>';
                var priceFr = '<?php echo $price; ?>';
                var cNumFr = '<?php echo $c_num; ?>';
                var dateFr = '<?php echo $sale_date; ?>';
                var prevRetAmtFr = $(".cust-info .atbr input").val().replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '');
                $(".cust-info .atbr input").val(parseInt(priceFr)+parseInt(prevRetAmtFr)+" /-");
                $("#total").val(parseInt(priceFr)+parseInt(prevRetAmtFr)+" /-");
                $("#paid").val(parseInt(priceFr)+parseInt(prevRetAmtFr)+" /-");
                $(".checkout-product-list").find("#"+barIdFr).find(".sold-qty").text("0");
                var prodArrFr = prodStrFr.split("-");
                var singleProdFr = prodArrFr.filter(function(item, index) {
                            return item.indexOf(barIdFr) == 0; 
                        });
                console.log(priceFr+"  "+prevRetAmtFr);
                var singleProdQtyFr = singleProdFr[0].split("/");
                var prevQtyFr = singleProdQtyFr[4];
                var currQtyFr = 1;
                var currPlusPrevFr = parseInt(currQtyFr) + parseInt(prevQtyFr);
                deleteIfMatches(prodArrFr, barIdFr);
                prodArrFr.push(barIdFr+"/"+0+"/"+discountFr+"/"+priceFr+"/"+currPlusPrevFr+"/"+0);
                $.post("ajax-req-handler.php",
                {
                    key: "updating-db-for-Sales-return-single-product",
                    arrFr: prodArrFr,
                    custIdFr: cNumFr,
                    dateFr: dateFr
                },
                function( dataFr ){
                //  alert(dataFr);
                });
            </script> 

【问题讨论】:

    标签: javascript jquery ajax jquery-ui jquery-ajaxq


    【解决方案1】:

    你不需要这样做

    $("div").find("script").each(function(){ eval($(this).text()); });

    标签在解析 HTML 时执行。我建议改为在脚本标记中使用逻辑来查找您尝试插入 HTML 的位置,然后进行插入。

    【讨论】:

    • 是的,我知道eval() 不是必需的,但我的这段代码如果不使用它就不会执行。
    • 添加type="text/javascript"到脚本标签?
    • 太好了.. 很高兴听到!祝你好运
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    相关资源
    最近更新 更多