PHP函数错误中包含JavaScript

PHP函数错误中包含JavaScript,php,javascript,Php,Javascript,我这里有个奇怪的问题。请检查下面的代码。考虑到php变量和javascript变量的混合,我不理解下面的代码是如何创建的 首先,让我们看看alert()的输出(注意$lat和$lng与数组$vlat不同): 在下面代码的第8行中,alert(eventlocation)正确显示了GoogleMap latlng的坐标(因此实现是正确的) 在第13行中,警报能够根据前一行中的for循环显示递增值(即0,1,2,3,4,…),因此也是正确的 在第14行中,alert($vlat[0])能够显示该数组

我这里有个奇怪的问题。请检查下面的代码。考虑到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>";
    
    echo”
    函数getabc(){
    var事件定位;
    地理位置;
    var s;
    事件地点=新玻璃($lat,$lng);
    //警报(事件位置);
    var-dist=新数组();
    s=$ctr;
    var tvid=新数组();
    对于(s=0;s);
    
    用于索引PHP数组
    vlat
    的变量
    s
    是您在JavaScript中声明的变量。您不能使用它来索引PHP数组

    你的代码试图做的是让PHP访问一个JavaScript变量,但它不能。你可以让PHP回显JavaScript,是的,但它不能双向工作

    alert($vlat[0]);
    alert($vlat[1]);
    alert($vlat[s]);
    
    $vlat[0]
    $vlat[1]
    $vlat[s]
    在发送到客户端之前在服务器上进行解析。前两个问题可以解决,但PHP不知道
    s
    是什么,因为
    s
    只在到达客户端后定义

    从聊天讨论中编辑

    $json=json\u encode($vlat);
    回声“
    功能测试(){
    var obj=JSON.parse(“$JSON”);
    警报(obj);
    }
    ”;
    
    $ctr在此之前声明,最初设置为0(零)
    $vlat
    设置为什么?看起来该变量在索引中不包含任何内容s@jlb$ctr最初设置为零,s设置为变量$ctr,主要是因为出于某些原因,在for循环中使用$ctr会出现错误。我认为问题在于您正在访问PHP数组
    $vlat
    (在服务器端)只有在JS部分(客户端)中定义了索引值。请尝试
    print\r($vlat)
    在您的echo语句之前查看该变量包含的内容。那么您建议我应该怎么做?我建议将$vlat作为对象传递到javascript中,并在纯JS中循环,而不是尝试访问JS循环中的PHP变量。类似于
    var myArray=;
    的方法可能有效。var obj=;alert(obj);出现错误,因此alert()无法运行;您可以将PHP数组序列化为JSON,以便JavaScript可以访问它。请参阅var obj=JSON.parse(“”);不起作用..有一个错误它只是没有显示任何东西..这意味着有一个错误..调用这一行后进程停止当您查看呈现页面的源代码时,您在
    var obj=JSON.parse(''''.'this'.'.'.'代码>>中看到的是什么代替了
    中的
    \uuuu this\uuuu
    ?让我们来看看
    $json = json_encode($vlat);
    
    echo "<script language='javascript' type='text/javascript'>
       function test(){
           var obj = JSON.parse('$json');
           alert(obj);
       }
       < /script>";