迭代ajax结果和变量不是预期的

时间:2015-09-28 17:42:32

标签: javascript php jquery ajax

getLocations.php的结果是id& LocationName的json结果。我创建了一个连接结果,因为还返回了其他数据。

 {"1:LocationA":{"lat":"38.8737","lon":"-77.013"},"2:LocationB":{"lat":"38.9002","lon":"-77.0365"}


    $.ajax({
            type:"GET",
            url:"getLocations.php",
            dataType:"json",
            success:function(result){
                    $.each(result,function(e,i){
                            var titleLong = e.split("&");
                            title = titleLong[1];
                            id = titleLong[0];
                            alert(title) // 1st alert
                            $.ajax({
                                    type:"GET",
                                    data:"id="+id,
                                    url:"getData.php",
                                    success:function(result){
                                         alert(title)  //2nd alert

为什么title的值不会遍历第二个ajax调用。如果你看第一个警报,那就是我所期待的。在每个循环期间检索的变量。如果你看第二个警报,它只是每个循环的最后一个结果(LocationB)....我的猜测是一个异步的事情......我已经尝试了两个asynch:true和false。

我错过了什么?

1 个答案:

答案 0 :(得分:5)

通过在不使用title的情况下声明var,您将其声明为全局变量。如果你添加var它将成为一个局部变量,每个内部AJAX调用都有自己的变量闭包:

var title = titleLong[1];