我在这里遇到了一个奇怪的问题。请检查以下代码。我不明白下面这段代码是如何通过某种方式创建的,考虑到php变量和javascript变量的混合。
首先,让我们看看alert()输出的内容(请注意$ lat和$ lng与数组$ vlat不同):
在下面代码的第8行中,alert(eventlocation)正确显示了GoogleMap latlng的坐标(因此实现正确)
在第13行中,alert(s)能够显示基于前一行中的for循环的递增值(即0,1,2,3,4,..),因此它也是正确的。
在第14行,alert($ vlat [0])能够显示该数组的第一个元素的纬度(在这组代码之前声明),所以它也是正确的
在第15行,alert($ vlat [1])能够显示该数组的第二个元素的纬度,因此它也是正确的
但在第16行,警报($ 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>";
答案 0 :(得分:1)
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>";
答案 1 :(得分:0)
用于索引PHP数组s
的变量vlat
是您在JavaScript中声明的变量。你不能用它来索引PHP数组。
您的代码尝试做的是让PHP访问JavaScript变量,但它不能。你可以使用PHP echo JavaScript,但是它不能兼顾两种方式。