2012-08-03 66 views
1

我有一個兩個循環: 一個從頁面計數對象,另一個爲每個對象設置一個變量。 假設x是對象的數量,y是變量; 所以如:json查詢每個項目[編號]在一個循環中

for x=10 ; y=3環shold樣子:

x:y 
    1:1 
    2:2 
    [..] 
    8:2 
    9:3 
    10:1 

對於每一個對象,我需要做一個JSON查詢。 JSON將0/1的意義查詢是回覆/未成功, 如果響應失敗,查詢有忽略ŸVAR: 如:

x:y 
    1:1 //1 
    2:2 //1 
    3:3 //0 - this is the failed query 
    4:1 //1 
    5:2 //1 
    6:1 //1 - y !=3 cause of failed query 

......

$('button.#start').click(function(){ 
     var last = $('input.blue').length; 
     var totalpackages = '10'; 
     var currentpackage; 
     for(currentpackage = '1'; currentpackage <= totalpackages;) 
     {// for each package; 
      var n; 
      for(n='1'; n <= last;) 
      { 
       //alert(currentpackage + ' : ' + n) 
       //n++ 
       //currentpackage++ 
       $.getJSON('api/testsenderfail.php', 
       function(data){ 
        worklink = data.data; 
        if(worklink == '1') 
        { 
        alert(currentpackage + ' : ' + n + ' : ' + worklink) 
        n++ 
        currentpackage++ 
        }else{ 
        alert(currentpackage + ' : ' + n + ' : ' + worklink) 
        n++ 
        //currentpackage++ 
        } 
       }); 
      } 
     } 
    }) 

我確信我做了一些思考錯誤。 Mozzila警報「此頁面上的腳本可能很忙,或者它可能已停止響應。 您可以立即停止腳本,或者可以繼續查看腳本是否會完成。」

PHP腳本 「API/testsenderfail.php」 生成JSON數組並輸出{ 「數據」: 「1」}(0/1) 90%輸出1個10%的輸出0 這是用於測試目的。

<?php 
    $rand = rand(0, 9); 
    if($rand == '0'){$work = '0';}else{$work = '1';} 
    $data = array('data' => $work); 
    echo json_encode($data); 
?> 
+0

我不能完全從猜測問題的使用情況。但是,你不能一次發送所有的數據到一個腳本嗎?有什麼要求讓你看看這種類型的循環 – joevallender 2012-08-06 10:39:53

回答

0

AJAX調用是異步的,這意味着回退方法將在您退出單擊事件處理程序後運行。您只是在回調方法中更改循環計數器,並且只能在完成循環後纔會發生,並且只有在更改循環計數器後纔會發生。

所以,你有一個永恆的循環。

+0

,所以我需要爲每個查詢定義一個循環?我可以爲x [我的情況]定義一個循環,但是我將需要另一個依賴於json回覆的循環...任何其他ideeas? – 2012-08-03 09:42:47

+0

或...如果我使用同步調用Ajax?對不起,但我是這個領域的新手。 – 2012-08-03 09:47:22

+0

然後我想在另一個解決方案:按鈕處理程序啓動一個循環:x。我怎樣才能定義變量被用戶之外的功能/按鈕處理程序? – 2012-08-03 09:59:40

0

我發現了一種方法來做到這一點很容易。如果其他人處於相同的情況,我會發布信息。

$('button.#start').click(
    function(){ 
    var X; 
    for(X='1'; X <= lastX;){ 
     do_Y_vals(x, y) // here a loop to count X that will pass every X to another function 
     x++ 
     y++ 
    } 
    }) 

此功能查詢各個X. 裏面,如果他得到了答覆,功能循環,直到Y = lastY

function do_y_vals(x){ 
    $.getJSON(//variables here 
    function(data){ 
     if(data.reply == '1'){ 
     function do_y_vals(x, y) 
     y++ 
     } 
    }); 
} 
相關問題