2016-08-04 6 views
1

私は現在、laravelを使用してPOSの販売を行っています。ここでバーコードを使用して商品コードをスキャンすることができます。バーコードが入力されるとチェック機能が呼び出されます。同じ商品コードがカートテーブルにある場合は、数量を1だけ加算します。その特定の製品の詳細。 (;製品は、同じ製品コードを持つすなわち)同時に、それは量を加算するが、私は同じことをしようとした場合しかし、ここでの問題は、私は同じ製品をスキャンしようとするということである迅速かつ同時のajaxコール

function check() { 
    if ($(".product_code").length) { 
     var product_code = $("#product_code").val(); 
     var total = $('#cart_contents tr').length; 
     $('#cart_contents tr').each(function(index) { 
      var p_code = $(this).find(".product_code").val(); 
      if (product_code == p_code) { 
       var num = +$(this).find('.product_quantity').val() + 1; 
       $(this).find('.product_discount').val(0); 
       $(this).find('.product_quantity').val(num).keyup(); 
       return false; 
      } else if (index === total - 1) { 
       populatecart(); 
      } 
     }); 
    } else { 
     populatecart(); 
     $(".cart_content_area").hide(); 
    } 
} 

function populatecart() { 
    var product_code = $("#product_code").val(); 
    $.ajax({ 
     url: "{{ url('getproductdata')}}", 
     data: { 
      p_id: product_code 
     }, 
     datatype: "JSON", 
     type: "get", 
     success: function(data) { 
      if (data == 'null') { 
       alert('No product code found!'); 
      } else { 
       $.each(data, function(k, v) { 
        $("#cart_contents").append('<tr>' + 
         '<td class="quantity"> {!! Form::text('sales_quantity[]', 1, ['class'=>'product_quantity form-control']) !!} </td>' + 
         '<td class="product_codes"><input type="text" name="product_code[]" value="' + v["product_code"] + '" class="form-control product_code" readonly/></td>' + 
         '<td><input type="text" name="product_name[]" value="' + v["product_name"] + '" class="form-control product_name" readonly/> </td>' + 
         '<td><input type="text" name="unit_value[]" value="' + v["sell_price"] + '" class="form-control unit_value" readonly/></td>' + 
         '<td>{!! Form::text('product_discount[]', 0, ['class'=>'product_discount form-control']) !!}</td>' + 
         '<td><input type="text" name="line_total[]" value="' + v["sell_price"] + '" class="form-control line_total" readonly/></td>' + 
         '<td class="remove_row"><input name="product_id[]" type="hidden" value="' + v["id"] + '" /><button type="button" class="removebutton" title="Remove this row">X</button></td>' + 
         '</tr>'); 
        calculateTotalSum(); 
       }); 
      } 
     } 
    }); 
} 

:私のjQueryの関数は次のようになります本当に素早く、同じ製品がカートテーブルの2つの異なる行に移入されますが、私が実際に望むのは、同じ製品コードに対して2行を作成する代わりに、製品の数量を2にすることです。

どうすればこの問題に対処できますか?

+0

'check()'を呼び出す前にスキャナーがスキャンしたバーコードを '#product_code'フィールドに書き込んでいるとしますか? 'calculateTotalSum()'とは何ですか - あなたはそれを表示していません - それは何ですか? – Jamiec

+0

calculateTotalSum()は、カートテーブルの行の合計コストを計算するためのものです。 –

答えて

-1

ajax呼び出しが重複する可能性があります。

あなたはajaxコールバック内に存在するかどうかチェックするだけで、check()にはまだありません。

2

コールバックベースのAPIを使用するのではなく、 私はあなたが約束を使用することをお勧めします。 このような流れになります。