在ajax循环加载多条数据,并在内部定义一个函数

Posted on 2011-09-25 20:13  bingfeng  阅读(2148)  评论(0)    收藏  举报

ajax取回的数据在加载的时候,在内部定义一个函数时,并调用域内的变量,在显示的时候出现所有的信息都显示的是最后一条数据的信息。因此应该把在循环内加载并动态创建函数取出,另定义一个函数,在ajax中调用。

function ajaxgetPoly(polyline)
{
 if(polyline=="polygon")
 {
   url="ajaxgetpoint.asp?type=5";
 }else
 {
   url="ajaxgetpoint.asp?type=6";
 }
 xmlHttp.open("GET",url,true);
	xmlHttp.onreadystatechange=function()
	{
             if (xmlHttp.readyState == 4)
			 {
                 var response = xmlHttp.responseText;
				//alert(response);
				var dlist=response.split("%");
				//alert(dlist.length);
				for(var i=1;i<dlist.length;i++)
				{
				   var n=eval("("+dlist[i]+")");
				   addpolyGon(n);
				 
				
				}
			}
				
				//alert( n.polyColor);
	}
	xmlHttp.send(null);
}

 

 1 function addpolyGon(item)
2 {
3 var polypoint=item.polyAry.split('|');
4 var pointary;
5 var pathpointary=new Array();
6 var flightPath=null;
7 for(var i=0;i<polypoint.length-1;i++)
8 {
9 //alert(new google.maps.LatLng(polypoint[i].split(',')[0],polypoint[i].split(',')[1]).lat());
10 pointary=polypoint[i].split(',');
11 pathpointary.push(new google.maps.LatLng(pointary[0],pointary[1]));
12
13 }
14 flightPath=new google.maps.Polygon({
15 map:map,
16 paths: pathpointary,
17 strokeColor: item.polyColor,
18 strokeOpacity: 0.8,
19 strokeWeight: 2,
20 fillColor: item.polyColor,
21 fillOpacity: 0.35
22 });
23 google.maps.event.addListener(flightPath,'click', showinfo);
24 function showinfo(event)
25 {
26 // var verpath=this.getPath();
27 var contentStr="<b>网格名称:</b>"+item.name+"<br/><b>网格管理人:</b>"+item.polymanager+"<br/>";
28 contentStr+="点击位置:"+GetFormatPoint(event.latLng.lat()) + "N," + GetFormatPoint(event.latLng.lng())+"E<br/>";
29
30 infowindow.setContent(contentStr);
31 infowindow.setPosition(event.latLng);
32
33 infowindow.open(map);
34
35
36 }
37 pathary2.push(flightPath);
38
39 }

在此函数中红色部分的内容若是放在外函数内,则最后弹出的信息都会是最后一条数据的信息,因此就把红色函数的内容拿出写一个函数调用,这样就不会出现上述情况。

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3