2015-12-26 111 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