2017-12-27 8 views
0

jquery ajax 요청을 보내고 일부 js 코드를 응답으로 보내고 있습니다. div $("div").html(data)에 응답을 배치하고 $("div").find("script").each(function(){ eval($(this).text()); }); 을 사용하여 스크립트를 실행했지만 왜 스크립트가 두 번 실행되는지 알지 못합니다. 다음은 응답 여기jquery가 여러 번 실행 중입니다.

$.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> 

답변

0

당신은 할 필요가 없습니다

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

< 스크립트와 Ajax 요청 광고 계약을 보내는 내 코드입니다 > 태그는 H TML이 파싱됩니다. 대신 HTML을 삽입 한 다음 삽입 작업을 수행하는 위치를 찾는 스크립트 태그에 로직을 사용하는 것이 좋습니다.

+0

예, 'eval()'은 필요하지 않지만이 코드는 이것을 사용하지 않고 실행되지 않습니다. – Waeez

+0

'type = "text/javascript"를 스크립트 태그에 추가 하시겠습니까? –

+0

이제 문제가 해결되었습니다. 고마워요 – Waeez

관련 문제