2012-06-25 3 views
1

У меня есть массив, как показано ниже в PHPПередача PHP массив в JavaScript,

array(
    (int) 0 => array(
     'id' => '1', 
     'name' => 'Mink7', 
     'about' => 'Creative Design agency', 
     'logo' => null, 
     'lat' => '13.004870000000', 
     'lng' => '77.576686084656' 
    ), 
    (int) 1 => array(
     'id' => '2', 
     'name' => 'Bakasura', 
     'about' => 'Live 2 Eat', 
     'logo' => null, 
     'lat' => '13.005643569006', 
     'lng' => '77.577485382942' 
    ) 
) 

Что я сделал. Я загружаю функцию в заголовок и записал в теге body следующее.

<script type="text/javascript"> 
$(document).ready(function(){ 
     var startups = <?php echo json_encode($startups); ?>; 
     $.each(startups, function(key, val) { 
      markMe(val.lat, val.lng, val.name, val.description, val.logo); 
     }); 
}); 
</script> 

Я получаю следующее сообщение об ошибке

markMe не определен

markMe (val.lat, val.lng, val.name, val.description, val.logo);

Javascript Файл, прилагаемый к HEAD.

// JavaScript Document 
$(document).ready(function() { 
    var map = new GMaps({ 
     div: '#map', 
     lat: 13.00487, 
     lng: 77.576729, 
     zoom: 13, 
    }); 

    /* 
    GMaps.geolocate({ 
     success: function (position) { 
      map.setCenter(position.coords.latitude, position.coords.longitude); 
     }, 
     error: function (error) { 
      alert('Geolocation failed: ' + error.message); 
     }, 
     not_supported: function() { 
      alert("Your browser does not support geolocation"); 
     }, 
     always: function() { 
      //alert("Done!"); 
     } 
    }); 
    */ 

    map.addControl({ 
     position: 'top_right', 
     text: 'Geolocate', 
     style: { 
      margin: '5px', 
      padding: '1px 6px', 
      border: 'solid 1px #717B87', 
      background: '#fff' 
     }, 
     events: { 
      click: function() { 
       GMaps.geolocate({ 
        success: function (position) { 
         map.setCenter(position.coords.latitude, position.coords.longitude); 
        }, 
        error: function (error) { 
         alert('Geolocation failed: ' + error.message); 
        }, 
        not_supported: function() { 
         alert("Your browser does not support geolocation"); 
        } 
       }); 
      } 
     } 
    }); 

    map.addMarker({ 
     lat: 13.00487, 
     lng: 77.576729, 
     title: 'Lima', 
     icon: "http://i.imgur.com/3YJ8z.png", 
     infoWindow: { 
      content: '<p>HTML Content</p>' 
     } 
    }); 

    function markMe(lat, lng, name, description, logo){ 
     map.addMarker({ 
      lat: lat, 
      lng: lng, 
      title: name, 
      icon: "http://i.imgur.com/3YJ8z.png", 
      infoWindow: { 
       content: description 
      } 
     }); 
    } 

}); 

ответ

3

искать json_encode в PHP, и использовать JSON.parse в JavaScript (или библиотеку как jQuery.parseJSON, если вам нужна широкая поддержка браузера)

- после обновления

вместо функции markMe (лат , lng, name, description, logo) {

do: markMe = function (lat, lng, name, description, logo) {

это потому, что функция, объявленная в функции не availlable вне этой функции

+0

да я попробовал этот метод .. но я получаю следующее сообщение об ошибке markMe не определен markMe (val.lat, val.lng, Вэл. имя, val.description, val.logo); –

+0

обновил мой вопрос .. –

+0

Спасибо, что это сработало. –

1

Прежде чем ответить на идентификатор хотел бы указать на то, что я делаю некоторые предположения.

  1. Я полагаю, что выше массив в PHP
  2. Я предполагаю, что ниже функция Javascript

, если это так, вы можете просто поместить ссылки на массивы в яваскрипте функцию, и это будет Работа.

Im угадывая ваши отображения данных, и я предположил бы, что лучший метод был бы построить всю функцию до РНР и выводить их на экран с помощью вызова метода, чтобы сделать код более удобным для чтения/понять

Однако с предположением о ваших сопоставлениях и для проверки того, работает ли код перед созданием вызова метода, я бы запускал что-то вроде этого в качестве первого удара.

<script type="text/javascript"> 
<?php 
foreach($array as $point) 
{ 
?> 
{ 
map.addMarker({ 
    lat: <?php print $point["lat"]; ?>, 
    lng: <?php print $point["lng"]; ?>, 
    title: <?php print $point["name"]; ?>, 
    icon: <?php if(!is_null($point["logo"]){ print $point["logo"];} ?>, 
    infoWindow: { 
     content: <?php print $point["about"]; ?> 
    } 
}); 
<?php } ?> 
</script> 

Благодаря

Николас

+0

с функцией $ .each Я могу выполнить итерацию.Но он говорит, что функция отсутствует –

+0

жаль, что мой ответ был дан до того, как вопрос был отредактирован, и не было видно, что вы делали звонки JSON. –

+0

Я еще не звоню json. Я преобразовываю массив в json и назначая его переменной –

Смежные вопросы