Shawn Look at this: http://plugins.jquery.com/project/ajaxqueue
Maybe will solve the problem or use ajax with option async = false Regards Tony On Mar 7, 12:16 pm, Shawn <[EMAIL PROTECTED]> wrote: > Here's the scenario. I'm writing a routine that will take in a list of > "items". Each item will fire an Ajax request and the resulting data is > placed into a variable identified in the "items" properties. > > Looping over the items to do the Ajax call results in the LAST item's > variable being updated. This makes sense in that the callback happens > after the loop has completed. > > So the question is how do I have the callback set the correct variable? > > Here's some sample code if it helps: > > //loop over each item and set the data as needed. > for (var x = 0; x < options.items.length; x++ ) { > var i = options.items[x]; > if (!i.ajaxparams) { return; }; > var macb = function (data) { queueData[i.dataname] = data; > checkComplete(); } > i.ajaxparams.success = macb; > $.ajax(i.ajaxparams); > } > > } > > The problem is the "macb" function - specifically the use of the > i.dataname. This works great if I have ONE ajax item. But adding two > (say for "names" and "scores") only sets the last dataname seen in the loop. > > doing the "var i = " *should* have prevented this, but isn't. (and my > brain is mush right now). So the next option is to pass in the dataname > value to the callback function. Except I don't see any possible way to > pass extra data to the callback. > > Is there a better way to handle this? I'm afraid the "obvious" answers > probably aren't suitable in this case. Unless my brain is worse off > than I thought right now. > > Thanks for any tips. > > Shawn > > ps. I snipped a little bit from the above code. There's logic to check > if a "success" function is specified in the ajaxparams and if so use > it's return value to set the queueData property.