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。
我错过了什么?
答案 0 :(得分:5)
通过在不使用title
的情况下声明var
,您将其声明为全局变量。如果你添加var
它将成为一个局部变量,每个内部AJAX调用都有自己的变量闭包:
var title = titleLong[1];