【问题标题】:Issue with getJSON ScriptgetJSON 脚本问题
【发布时间】:2015-12-26 12:29:48
【问题描述】:

我有一个问题

这让我发疯了

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

脚本运行良好,但是

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

这意味着如果代码没有进入if(myshopdata.order.reference==barcode)

但每次我将错误警报alert("Code cannot be found"); 放入我的代码中时,错误消息都会出现在 getjson 消息之前很久。

我知道 getJSON 是异步的。并尝试与 ajax call 相同,但它会减慢它的测试速度。

谁能帮我在我的代码中解决这个问题?

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

这是我的脚本

【问题讨论】:

  • $.getJSON is async... 所以你的代码行为正确。您需要添加 successerror 回调来管理这个。
  • 是的,我知道,但我不知道如何在我的示例代码中使用它:(

标签: javascript jquery json ajax getjson


【解决方案1】:

跟随 cmets... 查看使用 $.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

【讨论】:

    猜你喜欢
    • 2012-01-21
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多