2015-12-26 77 views
0

我有一個問題問題與腳本的getJSON

這讓我瘋了

我從JSON寫一個條形碼掃描儀女巫檢查數據。

該腳本工作正常,但

while循環,我想,如果要求的getJSON不匹配與掃描的條形碼得到一個錯誤警報消息後。

這意味着如果代碼不進入我把錯誤警報alert("Code cannot be found");在我的代碼if(myshopdata.order.reference==barcode)

但每一次,錯誤消息來長的getJSON消息之前。

我知道getJSON是異步的。並嘗試與Ajax調用相同,但它減慢它的測試。

任何人都可以幫助我如何解決這個在我的代碼?

錯誤消息是唯一的事情是在我的腳本

缺少這是我的腳本

+1

'$ .getJSON is async' ...所以你的代碼行爲正常。你需要添加'success'和'error'回調來管理這個。 – AdamJeffers

+0

是的我知道,但我不知道我可以如何使用它在我的示例代碼:( – Devil089

+0

從這裏檢查http://api.jquery.com/jquery.getjson/ –

回答

0

發表意見之後...使用$.when.apply()辦法看到更新的答案。

document.addEventListener("intel.xdk.device.barcode.scan", function(evt){ 

    if (evt.success == true) { 
     //successful scan 
     var barcode = evt.codedata;        

     //Get numbers of Orders 
     $.getJSON("http://www.testurl.de/api/orders/?ws_key=TEEUQWL9J76LFQE&output_format=JSON", function(data){       

      var order = JSON.stringify(data); 
      var orderdata =JSON.parse(order); 
      var ordercount = Object.keys(orderdata.orders).length; 

      var queries = []; 
      var result = 0; 
      var i = 0; 

      while(i <= ordercount) 
      { 
      queries.push(

       $.getJSON("http://www.testurl.de/api/orders/"+i+"?ws_key=TEZQFW41L9J76LFQE&output_format=JSON", function(data){ 

        var shopdata = JSON.stringify(data);    
        var myshopdata =JSON.parse(shopdata); 
        result++; // Increment results counter 
        sweetAlert("Code will be checkd", "Please wait","info"); 

        if(myshopdata.order.reference == barcode) 
        addcode(myshopdata.order.reference,myshopdata.order.associations.order_rows[0].product_name,myshopdata.order.total_paid_tax_incl,myshopdata.order.associations.order_rows[0].product_id);       

       }); 
      ); 

      i++; 
      } //end of while loop 

      // When all the getJSON calls have completed 
      $.when.apply($, queries).done(function() { 

       if(!result) // check results 
       console.log('No orders found'); 
      }); 

     }); //end of get json  

    }//end of event listener if 
    else 
     sweetAlert("Hoppla", "Woltest du nicht gerade scannen? :) "); 

},false);//end of event listener