我在这里有一个奇怪的问题。请检查下面的代码。考虑到php变量和javascript变量的混合,我不明白下面这段代码是如何以某种方式工作的。
首先,让我们看一下alert()的输出(注意$ lat和$ lng与数组$ vlat不同):
在下面的代码的第8行中,alert(eventlocation)正确显示了GoogleMap latlng的坐标(因此实现正确)
在第13行中,警报能够基于前一行中的for循环显示增量值(即0、1、2、3、4,..),因此它也是正确的。
在第14行中,alert($ vlat [0])能够显示该数组的第一个元素的纬度(在这组代码之前声明),因此它也是正确的
在第15行中,alert($ vlat [1])能够显示该数组第二个元素的纬度,因此它也是正确的
但是在第16行中,alert($ vlat [s])显示为未定义。
谁能解释一下?谢谢
echo "<script src= 'http://maps.google.com/maps?file=api&v=2&key=ABQIAAAA2jrOUq9ti9oUIF0sJ8it1RTNr3PHi_gURF0qglVLyOcNVSrAsRRu2C3WQApcfD0eh9NLdzf9My0b9w' type='text/javascript'> </script>
<script language='javascript' type='text/javascript'>
function getabc(){
var eventlocation;
var volunteerlocation;
var s;
eventlocation = new GLatLng($lat, $lng);
//alert(eventlocation);
var volunteerDist = new Array();
s = $ctr;
var tvid = new Array();
for(s=0;s<$numrows;s++){
//alert(s);
//alert($vlat[0]);
//alert($vlat[1]);
//alert($vlat[s]);
}
}
a = getabc(); < /script>";
最佳答案
alert($vlat[0]);
alert($vlat[1]);
alert($vlat[s]);
在将
$vlat[0]
,$vlat[1]
和$vlat[s]
发送到客户端之前,先在服务器上对其进行了解析。前两个可以解决,但是PHP不知道s
是什么,因为s
仅在到达客户端时定义。从聊天讨论中编辑
$json = json_encode($vlat);
echo "<script language='javascript' type='text/javascript'>
function test(){
var obj = JSON.parse('$json');
alert(obj);
}
< /script>";