2012-03-13 12 views
0

イムをPHPの文字列を渡すには、I'vは、この問題に関する記事の数を読み、いくつかの方法を試してみましたが、それらのどれも私のために働いていません。 基本的に私はデータベースから情報を引き出すPHPで書かれた2つの関数とJavaScriptマップで書かれたもう1つの関数を持ってGoogleマップのアドレスをジオコードできるようにし、情報ウィンドウ、以下に示します。問題JavaScript関数にPHPの文字列を渡すの問題を持つjavascript関数へ

PHP

try { 
     $bubbleData = $dbConnection->getBubbleData(); 
    } catch (Exception $e) { 
     echo "The following error occoured while attempting to get Google map info window data" . 
     " " . $e->getMessage() . 
     " " . "In file" . 
     " " . $e->getLine() . 
     " " . "on line" . 
     " " . $e->getLine(); 
    } 

    if (mysql_num_rows($bubbleData) == 0) { 
     echo "No Placement data found to populate map"; 
    } else { 
     while ($row = mysql_fetch_array($bubbleData)) { 
      $companyName = $row['Company_Name']; 
      $title = $row['Title']; 
      $address_1 = $row['Address_Line_1']; 
      $address_2 = $row['Address_Line_2']; 
      $address_3 = $row['Address_Line_3']; 
      $address_4 = $row['Address_Line_4']; 
      $post_Code = $row['Post_Code']; 
      $forename = $row['Forename']; 
      $surname = $row['Surname']; 

      $fullAddress = $address_1 . " " . $address_2 . " " . $address_3 . " " . $address_4 . " " . $post_Code; 

      $partAddress_1 = $address_1 . " " . $address_2; 
      $partAddress_2 = $address_3 . " " . $address_4; 

      $infoText = "<h4>" . $title . "</h4>" . 
        '<b>' . "Company name:" . '</b>' . " " . $companyName . 
        "</br>" . 
        "<b>" . "Employee name:" . '</b>' . " " . $forename . " " . $surname . '</br>' . 
        "<b>" . "Company address:" . "</b>" . " " . $partAddress_1 . '</br>' . 
        $partAddress_2 . '</br>' . $post_Code; 

    echo "<SCRIPT LANGUAGE='javascript'> 
    geocodeAddress(<?php echo json_encode($fullAddress);?>,<?php echo json_encode($infoText);?>); 
    </SCRIPT>'"; 
     } 
    } 

Javascriptを

function geocodeAddress (address,infoText) { 

      var geocoder = new google.maps.Geocoder(); 
      geocoder.geocode({'address': address}, function(results, status) { 
       if (status == google.maps.GeocoderStatus.OK) { 
        loadMarker(results[0].geometry.location,infoText,address); 
        latlngArray.push(results[0].geometry.location); 
       } else { 
        alert("Geocode was not successful for the following reason: " +" "+ status); 
       } 
      }); 
     }re 

今、私が個別に2つの作業罰金ことを知っているが、私は側でPHPをJavaScriptを呼び出し、それに変数を渡すしようとしたときにI GE放火犯に次のエラー:

プロパティアドレスに無効な値があります:私は、これはすべての日を実現するためにしようとしてきた

、アイブ氏はregexs面エコーとjson_encode()関数を使用し、誰も助けることができるnothings仕事? PHPとして解釈されることはありませんあなたはPHPコード内の<?php ?>入れ子にしている

+0

私はあなたにヒントを与えます: 'echo" '";'が間違っています。マニュアルを確認してください:http://www.php.net/manual/en/language.types.string.php – piotrekkr

答えて

4

事前に

おかげで、。むしろ、文字列として出力に出力します。

// Instead of 
echo "<SCRIPT LANGUAGE='javascript'> 
    geocodeAddress(<?php echo json_encode($fullAddress);?>,<?php echo json_encode($infoText);?>); 
    </SCRIPT>'"; 

// Change to 
echo "<SCRIPT LANGUAGE='javascript'> 
    geocodeAddress(" . json_encode($fullAddress) . "," . json_encode($infoText) . "); 
    </SCRIPT>'"; 
+0

json_encodeの結果をjavascriptにエコーして、引用符をエコーし​​ない場合は、それだけではありません。 jsのオブジェクトリテラルとして解釈されますか?つまり、コードの最初のビットはおそらく動作し、2番目のコードは出力を文字列にし、JSON.parseにエラーをスローする必要がないことを意味します。 –

+0

@JonathanKuhnそれは正解です、ありがとう、私はそれを編集しました。 –

+0

マイケルマイケルに働きました。 – user1079178

0

少なくとも私の場合、私は、ファイルの拡張子が.phpの場合のみ、HTML本体内

<?php ...foo... ?> 

セグメント、PHP-評価を受けることに気づきました。

mv foo.html foo.php 

をJavaScriptの変数に渡されたPHPの値を持っている:私は名前を変更しなければならなかった、ある 。