2015-12-26 5 views
0

У меня есть вопросПроблема с getJSON Script

Это сводит меня с ума

Я пишу сканер штрих-кода проверки ведьмой данных JSON.

Скрипт работает нормально, но

После цикла в то время как я хочу, чтобы получить предупредительное сообщение об ошибке, если запрос getjson DonT совпадает с отсканированным штрихом-кодой.

Это означает, что если код не получает в if(myshopdata.order.reference==barcode)

Но каждый раз, когда я поставил ошибку оповещения alert("Code cannot be found"); в моем коде, сообщение об ошибке приходит задолго до сообщения 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 
Смежные вопросы