2012-08-03 40 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++ 
     } 
    }); 
} 
相关问题