Php döngü içerisindeki javascript dizisine yazmasını

4 Cevap php

Ben konum belirleme değerlerini yankılanan bir php döngü var. Nasıl ben bir javascript dizi bu değerleri yazmak için alabilirsiniz, bu yüzden ben daha sonra bir HTML5 tuval üzerinde noktalar çizmek için kullanabilirsiniz?

Aşağıdaki gibi php döngü

<ul id = "geo-list">
    <?php foreach($data as $phrase) { ?>
        <li><?php
            if ($phrase->geo != false) {
                echo " | From (";
                echo $phrase->geo->coordinates[0];
                echo ",";
                echo $phrase->geo->coordinates[1];
                echo ")";
            } else {
                echo " | No Location Data";
            }
        ?>
        </li>
    <?php  } ?>
</ul>

4 Cevap

Denemek mi

var myJavascriptData = <?= json_encode($php_data) ?>;

PHP için JSON library yararlanmak isteyebilirsiniz.

Bir tarayıcının javascript programa veri aktarmak için en temiz yoldur "gizli" bir html tablo içine koymaktır.

Html gibi görünmelidir

echo "\n<TABLE style='display: none;' id='DATTAB' >" ;
get_rows();
while ($cf = next_row()) {
    echo "\n <TR>";
    echo "\n<TD>" . $cf['KEY'] . "</TD>";
    echo "\n<TD>" . $cf['COL1'] . "</TD>";
    echo "\n<TD>" . $cf['COL2'] . "</TD>";
    echo " </TR>";
  }
  echo "\n</TABLE>";

Bu tablo daha sonra kolayca Javascript erişilebilir: -

var dtab = document.getElementById("DATATAB");
var rows  = dtab.getElementsByTagName("tr"); 
for (var r = 0; r < rows.length ; r++) {
   row = rows[r];
   item_key  = row.cells[0].innerHTML;
   item_col1 = row.cells[1].innerHTML;
   item_col2 = row.cells[2].innerHTML;
   // do your thing here ......
}

Alternatively you could look at using the AJAX libraries like prototype or dojo which have the all javascript components for accessing data from a "REST" type service.

Daha sonra sayfanız için gerekli XML veya JSON alır, ayrı bir hizmet yazmak gerekir.

Benim önerim çıkış için bir komut dosyası bloğu dökümü ve orada bir değişken bunları ayarlamaktır.

Dizi tanımı aslında sayfasına çıkışını alır javascript kodu olması gerekir.

örneğin, gibi bir şey bir çıkış gerekir:

<script type="text/javascript">
    var coords = new Array(2);
    coords[0] = new Array(2);
    coords[0][0] = 123.45;
    coords[0][1] = 987.65;
    coords[1] = new Array(2);
    coords[1][0] = 234.56;
    coords[1][1] = 876.54;
</script>

Orada statik bu diziyi oluşturmak için daha etkili yollar vardır, ama bu sadece bir örnektir.

(Kod açısından) daha verimli bir şekilde bir javascript tanımını dökümü, sonra değişmez dizi tanımlanmış bir dize oluşturmak olacaktır. Çıkış gibi bir şey olurdu:

<script type="text/javascript">
    var coords = [[123.45,987.65],[234.56,876.54]];
</script>

böylece php içinde döngü içinde, sonuçta var coords = [[123.45,987.65],[234.56,876.54]] içerecek bir dize oluşturmak istiyorum. Eğer döngü dışında, komut dosyası blokları ve sayfa çıktı onu sarın.