在PHP函数中包含JavaScript错误

时间:2012-03-15 09:34:30

标签: php javascript

我在这里遇到了一个奇怪的问题。请检查以下代码。我不明白下面这段代码是如何通过某种方式创建的,考虑到php变量和javascript变量的混合。

首先,让我们看看alert()输出的内容(请注意$ lat和$ lng与数组$ vlat不同):

  1. 在下面代码的第8行中,alert(eventlocation)正确显示了GoogleMap latlng的坐标(因此实现正确)

  2. 在第13行中,alert(s)能够显示基于前一行中的for循环的递增值(即0,1,2,3,4,..),因此它也是正确的。

  3. 在第14行,alert($ vlat [0])能够显示该数组的第一个元素的纬度(在这组代码之前声明),所以它也是正确的

  4. 在第15行,alert($ vlat [1])能够显示该数组的第二个元素的纬度,因此它也是正确的

  5. 但在第16行,警报($ vlat [s])显示未定义。

  6. 任何人都可以解释一下吗?感谢

        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>";
    

2 个答案:

答案 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,但是它不能兼顾两种方式。