getJSON脚本问题

时间:2015-12-26 12:29:48

标签: javascript jquery json ajax getjson

我有一个问题

这让我发疯了

我写了一个条形码扫描仪,检查来自json的数据。

脚本运行正常,但

在while循环之后,如果getjson请求与扫描的条形码不匹配,我想获得错误警告消息。

这意味着代码不会进入process.ExitCode

但是每当我在代码中放入错误警告if(myshopdata.order.reference==barcode)时,错误消息就会在getjson消息之前出现。

我知道getJSON是异步的。并尝试与ajax调用相同,但它减慢它测试它。

任何人都可以帮我解决这个问题吗?

错误消息是我的脚本中唯一缺少的

这是我的剧本

1 个答案:

答案 0 :(得分: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