Ben JavaScript bir PHP değişkeni kullanmak istiyorum. Nasıl mümkün?
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 :)
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