我在这里有一个奇怪的问题。请检查下面的代码。考虑到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&amp;v=2&amp;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>";

08-27 16:58