PHP函数错误中包含JavaScript
我这里有个奇怪的问题。请检查下面的代码。考虑到php变量和javascript变量的混合,我不理解下面的代码是如何创建的 首先,让我们看看alert()的输出(注意$lat和$lng与数组$vlat不同):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])能够显示该数组
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>";
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>";