2016-04-12 12 views
0

Kullanıcının stokta bir dizi stok girebileceği bir stok tablosu yapıyorum ve bu işlev, tablodaki her bir üye için, veritabanındaki stok miktarının yeterli olup olmadığının doğrulanmasıdır. sorunu yap.

Chrome'daki kodu kırıp geçirdiğimde, tablodaki bitmiş döngüye kadar $ .post öğesinin iç koduna asla basmıyor gibi görünüyor. Ve o zamana kadar AddIssue'a aktarılması gereken veriler sadece 1 ve 10 olur ve başka bir şey olmaz.

O beni çıldırtmaya başladı, bu yüzden ben bu

<?php 
    $server = 'SQL2008'; 
    $connectionInfo = array("Database"=>"rde_470585"); 
    $conn = sqlsrv_connect($server,$connectionInfo); 

    $false = -1; 
    $true = 1; 
    $id = $_POST['id']; 
    $quantity = $_POST['issueQuantity']; 
    $query = "Select Quantity FROM Stock WHERE StockID = ?"; 
    $param = array($id); 
    $res = sqlsrv_query($conn, $query, $param); 
    $row = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC); 
    $dbQuantity = $row['Quantity']; 

    if ($dbQuantity < $quantity) 
    { 
     echo $false; 
    } 
    else if($dbQuantity >= $quantity) 
    { 
     echo $true; 
    } 
$ .post

tarafından çağrılan PHP'dir

var issueArray =[]; 

function VerifyIssue() 
{ 
    var numRows = document.getElementById("searchTable").rows.length - 2; 
    var running = true; 

    var str1 = "issue_"; 

    while(running == true) 
    { 
     if (numRows < 0 && running == true) 
     { 
      running = false; 
      //insert code for success 
      break; 
     } 
     else if (running == false) 
     { 
      break; 
     } 

     var str2 = numRows; 
     var comb = str1.concat(str2); 
     var issue_element = document.getElementById(comb); 
     var q = issue_element.value; 


     var i = issue_element.name; 
     var idd = i.replace("issue_", ""); 
     var trimId = idd.trim(); 

     $.post 
     (
      'includes/issueCheck.php', 
      { 
       id: trimId, 
       issueQuantity: q 
      }, 
      function(result) 
      { 
       alert(result); 

       if (result < 0) 
       { 
        alert("One of more quantities inputted are greater than held in stock"); 
        running = false; 
       } 
       if (result > 0) 
       { 
        addIssue(trimId, q); 
       } 
      } 
     ); 
     numRows = numRows - 1; 
    } 
    alert(issueArray); 
} 

function addIssue(issueID, quant) 
{ 
    var item = {}; 

    item.label = issueID; 
    item.value = quant; 
    issueArray.push(item); 

} 

yanlış burada ne aradığımı üzerinde bir işaretçi sevinirim

+0

Devam et yerine "break" ile hata yaptınız mı? –

+2

Biraz offtopic ama kodunuzu girintilemeyi kolaylaştırır. – Rickert

+0

'$ query =" Stok Miktarı Stokta NEDEN? = ""; '$ Id' yerine 'StockID =' ın arkasında bir soru işareti kullanmak niyetiniz miydi? – Black

cevap

0

Fonksiyonunuzun (sonuç) {...} sadece POST isteğiniz için sunucu yanıtı alındığında çağrılacağını biliyor musunuz? Bu gecikmeyi hesaba katmak için kodu oluşturmanız gerekir.

+0

Nasıl demek istiyorsun? – hyclrs

0

Hala bu konuda çalışıyorum, Promjo'nun ne yaptığını temel alarak söylüyorum, ama benim için işe yarayacağından emin değilim.

Nasıl devam etmeden önce javascript'in sunucu yanıtı beklemesini başka nasıl yapabilirim?

İlgili konular