[UPHPU] ajax causing my loop to loop more than allowed

Jennifer Charrey jcharrey at gmail.com
Fri Sep 25 13:48:43 MDT 2009


First of all, I think you want details[i][2] in the loop, not 
details[i][3]. Second of all, the loop counter is incremented when your 
ajax call is made, but it doesn't print out the alert until after the 
call completes. In between those two different times, the counter is 
being incremented by the remaining passes of the loop.

It's printing out the CURRENT value of the loop counter, and in your 
case it's happening after the loop is done (hence i >= details.length). 
It's still iterating the correct number of times.

1st: 0
3rd: 0
1st: 1
3rd: 1
1st: 2
3rd: 2
1st: 3
3rd: 3
1st: 4 <-- called here
GET http://blah
1st: 5
3rd: 5
1st: 6
3rd: 6
2nd: 7 <-- completed here


On 9/25/2009 12:02 PM, Wade Preston Shearer wrote:
> Consider the following javascript code:
>
> details = new Array();
>
> details[0] = new Array('pig', 'cow');
> details[1] = new Array('pig', 'cow');
> details[2] = new Array('pig', 'cow');
> details[3] = new Array('pig', 'cow');
> details[4] = new Array('pig', 'cow', 'ajax');
> details[5] = new Array('pig', 'cow');
> details[6] = new Array('pig', 'cow');
>
> for(var i = 0; i < details.length; i++) {
> // first alert
> alert(i);
>
> if(details[i][3] == 'ajax') {
> $.get('core/data.php', {data: column}, function(data) {
> load_switch(data);
>
> // second alert
> alert(i);
> });
> } else {
> var data = $('.data tbody tr:eq(' + row + ') .' + column).text();
> load_switch(data);
>
> // second alert
> alert(i);
> }
> }
>
>
> Alert 1 produces: 0,1,2,3,4,5,6
> Alert 2 produces: 0,1,2,3,5,6,7
>
>
> I can understand alert 2 being out of order or incorrect since the loop
> continues to spin while the ajax call is made, but I don't understand
> how the counter in the loop ever makes it to 7. Assuming that the loop
> finishes cycling before the ajax call finishes, shouldn't alert 2
> produce this?
>
> 0,1,2,3,5,6,6
>
>
>
>
> _______________________________________________
>
> UPHPU mailing list
> UPHPU at uphpu.org
> http://uphpu.org/mailman/listinfo/uphpu
> IRC: #uphpu on irc.freenode.net


More information about the UPHPU mailing list