2012-03-15 11 views
2

私は奇妙な問題を抱えていました。以下のコードを確認してください。私は、PHPの変数とjavascriptの変数が混在していると考えて、どういうわけかこのコードがどのように作成されているのか理解できません。以下のコードの8行目でJavaScriptをPHP関数に組み込むエラー

  1. 、警告(:

    まず、私たちは何の警告()の出力を($ LATと$ LNGは、配列$ VLATとは異なることに注意してください取る)を見てみましょう(実装が正しい)

  2. アラートでは、増分値(つまり、0,1,2,3,4、..)を表示できました。 )これは前の行のforループに基づいています。ライン14において

  3. 、アラート($ VLAT [0])(コードのセットの前に宣言された)その配列の最初の要素の緯度を表示することができたので、それはまた、ライン入力

  4. 正しいです15、alert($ vlat [1])は、その配列の2番目の要素の緯度も表示できるようになりました。

  5. しかし、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>"; 
+0

$のCTRこの前に宣言され、それが13 –

+0

に設定されていますか?その変数がインデックスに何も含まれていないように見える –

+0

何である '$ vlat'セットに沿ったものである@Stijnそれは最初に0(ゼロ) – jlb

答えて

1
alert($vlat[0]); 
alert($vlat[1]); 
alert($vlat[s]); 

$vlat[0]$vlat[1]$vlat[s]は、サーバー上で解析されます。最初の2つは解決できますが、sはクライアント側に達すると定義されているので、sが何であるか分かりません。チャットの議論から

編集

$json = json_encode($vlat); 

echo "<script language='javascript' type='text/javascript'> 
    function test(){ 
     var obj = JSON.parse('$json'); 
     alert(obj); 
    } 
    < /script>"; 
+0

大丈夫ですので、どうすればいいですか? –

+0

PHP配列をJSONにシリアライズすることができるので、JavaScriptからアクセスできます。 http://stackoverflow.com/a/4885796/247702 – Stijn

+0

を参照してください。var obj = JSON.parse( '<?php echo json_encode($ vlat);?>');動作しません..エラーがあります –

0

あなたがインデックスにPHPの配列vlatを使用している変数sは、JavaScriptで宣言された変数です。 PHP配列のインデックスには使用できません。

あなたのコードが行うことは、PHPがJavaScript変数にアクセスすることができないようにすることです。 PHP echo JavaScriptを使用することはできますが、どちらの方法でも動作しません。彼らは、クライアントに送信される前に

+0

あなたは何をすべきだとおっしゃいますか? –

+0

私は$ vlatをオブジェクトとしてJavaScriptに渡し、JSループのPHP変数にアクセスするのではなく、純粋なJSでループすることをお勧めします。'var myArray = <?php echo json_encode($ vlat);?>のようなものです。 '働くかもしれない。 – jammypeach

+0

var obj = <?php echo json_encode($ vlat);?>; alert(obj); alert()が実行されないようにエラーがあります。 –

関連する問題