nasıl Harici javascript dosyası için bir değişken ayarlanır?

5 Cevap php

Ben harici bir js dosyasında kullanılmak üzere benim session_id değişkeni ayarlamak için nasıl anlamaya çalışıyorum. İşte ne var.

php dosyası:

$output = '<script src="test.js">
     var session_id = '.$_SESSION['id'].'
</script>';
print $output;

js dosyası:

alert(session_id);

Bu grubu ben session_id tanımlı değil söyleyerek bir hata alıyorum. Genelinde bu bilgi geçmek için bir yolu var mı?

Ben bilgi ile sadece kurulum gizli bir girişi olabilir ama bunu yapmanın daha iyi bir yolu olduğunu düşünüyorum biliyorum.

5 Cevap

Hum, ne:

$output = '<script type="text/javascript> var session_id = '.$_SESSION['id'].'</script><script type="text/javascript" src="test.js"></script>';
print $output;

?

Eğer harici bir JS dosyası dahil ediyorsanız, size komut dosyası etiketleri arasında kod koyamazsınız. Yani istediğiniz:

<script type="text/javascript">
    var session_id = <?php print $_SESSION['id']; ?>;
</script>
<script type="text/javascript" src="test.js"></script>

Eğer HTML oturum numarası gizli bir form alanı yapma ve sonra onu bulmak için test.js DOM yöntemlerini kullanarak bu kludginess alabilir ancak.

Eğer global bir değişken olarak session_id ile başa çıkabilirim, o zaman şu yapacak:

<script>
     var session_id = '<?php echo $_SESSION['id'];?>'
</script>
<script src="test.js"></script>

Eğer bir mahfaza içinde javascript dosyasına değişken sadece kullanılabilir yapmak istiyorsanız, vb {bakın, sizin js dosyası için PHP çözümleyici veya kullanım parametreleri aracılığıyla js dosya gönderebilirsiniz, ancak ikinci javascript gerçekten kolayca erişilebilir değil [ (0)]}.

JavaScript dosyası not bulundu ise <script> etiketi içinde içerik yalnızca yürütülür. Hiçbir dosya belirledi önce ayrı bir <script> etiketinde değişkenleri ayarlayın:

<script>
     var session_id = '<?=$_SESSION['id']?>';
</script>
<script src="test.js">
</script>

Başka bir çözüm PHP böyle bir komut dosyası hizmet sahip olmaktır:

  • Eğer gerektiren değişken tanımları ile hazırlanan bir JS dosyası var:
var value1 = '{value1}';
var value2 = '{value2}';

...
// script goes here
  • PHP ile, dosyayı okumak ve {value1} olarak değiştirin ve veri ile {value2} etiketler:

if ($_GET["script"])
{
 $data = array(
   "value1" => $_SESSION["id"],    # i.e.
   "value2" => $foo
 );

 $script = file_get_contents($script . ".js");

 foreach ($data as $key => $value)
 {
  $script = str_replace("{" . $key . "}", $value, $script);
 }

 header("Content-Type: text/javascript");
 echo $script;
 exit();
}
  • Sonra bu gibi PHP "çözümleyici" çağırabilirsiniz:
<script type="text/javascript" src="?script=myscript"></script>