Цикл PHP внутри Javascript в заголовке - этот код действителен вообще? - PullRequest
1 голос
/ 21 января 2010

Здравствуйте, дорогие стеки,

Я новичок в веб-программировании и нахожу смесь сервер-клиент запутанной. Я написал очень простой код, который принимает двухмерный массив PHP [index] [keys] (из запроса) для рисования маркеров на карте Google (JavaScript). Оно работает. Но это не выглядит правильным для меня! Действительно ли это правильный способ передачи значений из моего массива PHP в функции Javascript?

Спасибо заранее Ari


Снова отредактируйте для ясности, добавьте 4 пробела, спасибо за совет!

<head>

<meta http-equiv="content-type" content="text/html; charset=utf-8">

<title><?php echo $title;?></title

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=GoogleMapsKey"
type="text/javascript">

</script>

<script type="text/javascript"  language="JavaScript">

var m_map;

//Add one marker. 
function addmarker(iLat, iLon)
{ 
 var point = new GLatLng(iLat, iLon);
 m_map.addOverlay(new GMarker(point)); 
}


function initialize() 

{

if (GBrowserIsCompatible()) 
{

    m_map = new GMap2(document.getElementById("map_canvas"));
    m_map.setCenter(new GLatLng(37.4419, -122.1419), 1);
    m_map.setUIToDefault();

    <?php foreach($query as $item):?>

    var oLat = '<?php  echo $item['lat'];?>';
    var oLon = '<?php  echo $item['lon'];?>';

    addmarker(oLat, oLon);  

    <?php endforeach;?>

}
}// End initialize() 

</script>
</head>

<body onload="initialize()" onunload="GUnload()">
<div id="map_canvas" style="width: 500px; height: 300px"   ></div>

Ответы [ 4 ]

1 голос
/ 21 января 2010
<?php 
foreach($query as $item):?>

    var oLat = '<?php  echo $item['lat'];?>';
    var oLon = '<?php  echo $item['lon'];?>';

    addmarker(oLat, oLon);  

    <?php endforeach;?>

Приведенный выше фрагмент кода должен обеспечивать следующий вывод, если переменная $ query установлена ​​в $ Запроса = массив (массив ( 'лат' => 2, 'долгота' => 4), массив ( 'лат' => 5, 'долгота' => 6), массив ( 'лат' => 7, 'долгота '=> 8), массив (' лат '=> 9,' долгота '=> 1)); * +1002 *


var oLat = '2'; var oLon = '4';

addmarker (олат, олон);

var oLat = '5'; var oLon = '6';

addmarker (oLat, oLon);

var oLat = '7'; var oLon = '8';

addmarker (oLat, oLon);

var oLat = '9'; var oLon = '1';

addmarker (oLat, oLon);

Проверьте страницу HTML источника.

1 голос
/ 21 января 2010

Браузер не заботится о том, как туда попадают значения, структуры и даже код, если он действительно JavaScript.

1 голос
/ 21 января 2010

Я бы написал:

<?php foreach($query as $item):?>

addmarker('<?php echo $item['lat'];?>', '<?php echo $item['lon'];?>');  

<?php endforeach;?>

потому что он более краткий и не объявляет две переменные JS более одного раза.

1 голос
/ 21 января 2010

Похоже, что в вашем коде нет ничего неправильного. Можете ли вы предоставить вывод?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...