Javascript bir PHP değişken geçmek için en iyi yolu nedir?

3 Cevap php

Ben şu anda gizli giriş alanlarında belirli değişkenleri echo ve ben bunları gerektiğinde Javascript ile onları okudum.

Beni ve bir meslektaşım şimdi sadece Javascript için tüm değişkenleri içeren PHP ile ekstra bir JavaScript dosyası üreten düşünüyoruz. Bu şekilde değişkenler zaten var ve HTML hiçbir ekstra kod yoktur.

Javascript PHP değişkenleri geçmek için iyi yolları nelerdir? Ve nasıl bizim çözüm geliyor?

3 Cevap

General Data Passing

JavaScript için yaygın olarak kullanılan bir alış biçimi json_encode kullanarak, JSON olduğunu. Böyle bir PHP dosyası:

<?php
    $data = array("test" => "var", "intvalue" => 1);
    echo json_encode($data);
?>

Daha sonra bu gibi edebi bir JavaScript nesnesi döndürür:

{
    "test" : "var",
    "intvalue" : 1
}

Doğrudan, örneğin, sayfanızda bir JavaScript değişkeni içine yankı:

var data = <?php echo json_encode($data)?>;

Veya ... Ajax ile bunu talep (örneğin kullanarak jQuery's getJSON).

Outputting to attributes on tags

Sadece htmlspecialchars kullanmak, çıkış için bir etiketi üzerinde bir öznitelik için bir dize gerekir. Bir değişkeni varsayarsak:

<?php
$nifty = "I'm the nifty attribute value with both \"double\" and 'single' quotes in it.";
?>

... Bu gibi çıktı bunu yapabilirsiniz:

<div data-nifty-attr="<?php echo htmlspecialchars($nifty)?>">...</div>

... Ya da kısa etiketleri kullanırsanız:

<div data-nifty-attr="<?= htmlspecialchars($nifty)?>">...</div>

Ben HTML başında hep birlikte onları yankı için kullanabilirsiniz. Benim ihtiyaçları için yeterince temiz görünüyor :)

Bunu yapabileceğini 3 yolu vardır:

  • Echo them directly into the javascript source: <?echo "var user = '$user';";?>. Works, but it's messy.
  • Bir ajax isteği yoluyla onları geçmek. Bu yerli değişken geçen gelebilir yakın, ancak olumsuz bir ek HTTP isteği sürer.
  • Eğer gizli form alanları oluşturma ve sonra onları okuyarak onları geçerken, hangi yapıyoruz.