PHP JavaScript değişkeni alın

6 Cevap php

Ben JavaScript bir PHP değişkeni kullanmak istiyorum. Nasıl mümkün?

6 Cevap

Lütfen sayfa oluşturulur yaparken javascript PHP değişkeni yazdırabilirsiniz.

<script type="text/javascript">
    var MyJSStringVar = "<?php Print($MyPHPStringVar); ?>";
    var MyJSNumVar = <?php Print($MyPHPNumVar); ?>;
</script>

Tabii ki bu simple değişkenleri değil, nesneler içindir.

PHP ile üreterek JavaScript PHP Değişkenler iletebilirsiniz:

<?php
$someVar = 1;
?>

<script type="text/javascript">
    var javaScriptVar = "<?php echo $someVar; ?>";
</script>

Bu JavaScript kullanmak istediğiniz PHP değişkenin ne tür bağlıdır. Örneğin, sınıf yöntemlerle bütün PHP nesneleri JavaScript kullanılamaz. Ancak, kullanabileceğiniz yerleşik PHP JSON gösterimleri içine basit bir PHP değişkenleri dönüştürmek için JSON (JavaScript Object Notation) fonksiyonları. Daha fazla bilgi için, aşağıdaki bağlantıları okuyun lütfen:

Eğer PHP değişkenin JSON temsilini üretebilir ve o zaman Javascript kodu, sayfa yüklenirken içine yazdırmak. Örneğin:

<script type="text/javascript">
  var foo = <?php echo json_encode($bar); ?>;
</script>

Ben kolay yol biçimi ikisi arasında veri aktarmak için daha sonra JSON kullanmak, web sayfalarınızda jQuery javascript kütüphanesi dahil etmek olduğunu düşünüyorum.

HTML sayfalarında, bu gibi PHP komut verileri talep edebilir:

$.getJSON('http://foo/bar.php', {'num1': 12, 'num2': 27}, function(e) {
    alert('Result from PHP: ' + e.result);
});

Bar.php olarak bunu yapabilirsiniz:

$num1 = $_GET['num1'];
$num2 = $_GET['num2'];
echo json_encode(array("result" => $num1 * $num2));

This is what's usually called AJAX, and it is useful to give web pages a more dynamic and desktop-like feel (you don't have to refresh the entire page to communicate with PHP).

Other techniques are simpler. As others have suggested, you can simply generate the variable data from your PHP script:

$foo = 123;
echo "<script type=\"text/javascript\">\n";
echo "var foo = ${foo};\n";
echo "alert('value is:' + foo);\n";
echo "</script>\n";

Çoğu web sayfaları günümüzde ikisinin bir kombinasyonunu kullanabilirsiniz.

<?php 
$j=1;
?>
<script>
var i = "<?php echo $j; ?>";
//Do something
</script>
<?php
echo $j;
?>

Bu Ajax olmadan javascript bir php değişken geçen en kolay yoludur.

Ayrıca, bu gibi bir şey kullanabilirsiniz:

var i = "<?php echo json_encode($j); ?>";

Bu, daha güvenli ya da daha güvenli olduğu söyleniyor. i think

D; Tabii, php doğrudan geçirerek javascript $ _GET nesneyi almak için yolu vardır, ama başka yollar da vardır

Ben hem anlatmaya devam edecektir.


1) Direct parse by function. Bu sadece url kapmak ve RegEx'in ile doğrudan ayrıştırır

$_GET=function(key,def){
    try{
        return RegExp('[?&;]'+key+'=([^?&#;]*)').exec(location.href)[1]
    }catch(e){
        return def||''
    }
}

Kolay peasy, sorgu dizesi ?ducksays=quack&bearsays=growl, sonra da $_GET('ducksays') quack ve $_GET('bearsays') dönmelidir dönmelidir ise growl

Şimdi muhtemelen anında sözdizimi bir işlev olmanın bir sonucu olarak farklı olduğunu fark. Bunun yerine $_GET[key], o $_GET(key). Eh, ben de düşündüm :)


: Burada ikinci yöntem geliyor

2) Object Build by Loop

onload=function(){
    $_GET={}//the lack of 'var' makes this global
    str=location.search.split('&')//not '?', this will be dealt with later
    for(i in str){
        REG=RegExp('([^?&#;]*)=([^?&#;]*)').exec(str[i])
        $_GET[REG[1]]=REG[2]
    }
}

Hani! $ _GET Şimdi url her nesnenin bir dizin içeren bir nesne, şimdi bu mümkündür:

$_GET['ducksays']//returns 'quack'

VE bu mümkün

for(i in $_GET){
    document.write(i+': '+$_GET[i]+'<hr>')
}

Bu fonksiyonu ile not kesinlikle mümkündür.


Ben bu ilginç ve yararlı oldu umuyoruz