2012-03-15 43 views
2

包括JavaScript我這裏有一個奇怪的問題。請檢查下面的代碼。我不明白下面的代碼是如何通過混合使用php變量和javascript變量的方式創建的。在PHP函數錯誤

首先,讓我們看看有什麼警報()輸出(需要注意的是$ lat和$ LNG從數組$ VLAT不同):

  1. 在8號線下面的代碼,警報( eventlocation)正確顯示GoogleMap latlng的座標(所以實現是正確的)

  2. 在第13行中,alert(s)能夠顯示遞增值(即0,1,2,3,4,...) )基於上一行中的for循環,所以它也是正確的。

  3. 在第14行,警報($ VLAT [0])是能夠顯示陣列(該組代碼之前聲明)的所述第一元件的緯度所以它也是正確

  4. 在線路15,alert($ vlat [1])能夠顯示該數組的第二個元素的緯度,因此它也是正確的

  5. 但是在第16行中,alert($ vlat [s])顯示爲undefined。

任何人都可以解釋嗎?由於

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

$的點擊率是在這之前宣佈,它最初被設置爲0(零) – 2012-03-15 09:37:40

+0

@Stijn很符合13 – 2012-03-15 09:39:09

+0

是什麼'$ vlat'設置爲?它看起來像該變量不包含任何索引s – jlb 2012-03-15 09:39:43

回答

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

好,那我該怎麼辦? – 2012-03-15 09:49:33

+0

您可以將PHP數組序列化爲JSON,以便可以通過JavaScript訪問它。請參閱http://stackoverflow.com/a/4885796/247702 – Stijn 2012-03-15 09:52:27

+0

var obj = JSON.parse('<?php echo json_encode($ vlat);?>');不起作用..有一個錯誤 – 2012-03-15 10:00:39

0

您使用索引的PHP陣列vlat變量s是你在JavaScript中聲明的變量。你不能用它來索引一個PHP數組。

你的代碼試圖做的是有PHP訪問JavaScript變量,它不能。你可以讓PHP回聲JavaScript,是的,但它不能同時工作。

+0

那麼你應該怎麼做? – 2012-03-15 09:49:08

+0

我建議將$ vlat作爲一個對象傳入到javascript中,並在純JS中循環,而不是試圖訪問JS循環中的PHP變量。像'var myArray = <?php echo json_encode($ vlat);?>; '可能會工作。 – jammypeach 2012-03-15 09:54:02

+0

var obj = <?php echo json_encode($ vlat);?>; alert(obj); 有一個錯誤,所以alert()不運行; – 2012-03-15 10:00:14