JS bir PHP değişkeni gerektiğinde nasıl PHP javascript ayırabilirsiniz?

5 Cevap php

Aşağıda jquery ve PHP ile gördüm bir kod küçük bir parçası olduğunu.

5. satırdaki PHP kısmı fark, ben genelde bu yüzden nasıl ayrı dosyalarda benim JS tutmak mümkün olacaktır ayrı dosyalar halinde benim javascript koymak ancak aşağıdaki gibi gerektiğinde hala PHP kullanmak?

//when the DOM is ready  
$(document).ready(function(){  
    //settings on top  
    var domain = 'http://davidwalsh.name/';  
    var initialPosts = <?php echo get_posts(0,$_SESSION['posts_start']); ?>;  
    //function that creates posts  
    var postHandler = function(postsJSON) {  
        $.each(postsJSON,function(i,post) {

5 Cevap

Ne genellikle yapmak olduğunu:

  • (istemci tarafında önbelleğe alma için ve tüm bu) bir. js dosyasında mümkün olduğunca JS koymak
  • Bu JS kodu JS değişkeni kullanır
  • JS değişken beyan olduğunu / bir PHP dosyasından başlatıldı; Bu aslında, sunucu tarafında yürütülen bazı kodu gerekir sadece bir parçasıdır

Örneğin, ben böyle bir şey olurdu herhalde:

my-file.php:

var thisIsMyJSVar = '<?php echo $test; ?>';

Yani, PHP, biz tha değişkeni bildirmek ve değerini ayarlayın. Bu "dinamik" bir parçasıdır.

ve benim-file.js in:

//when the DOM is ready  
$(document).ready(function(){  
    //settings on top  
    var domain = 'http://davidwalsh.name/';  
    var initialPosts = thisIsMyJSVar;  // Use the JS variable declared in the PHP file
    //function that creates posts  
    var postHandler = function(postsJSON) {  
        $.each(postsJSON,function(i,post) {

Burada, statik JS dosyasında, sadece değerini kullanın; Burada hiçbir şey dinamiktir, ve bu dosya istemci tarafından önbelleğe alınmış olabilir - her sayfada yeniden indirilemez değil.


The problem with that idea is the JS file depends on some initialisation done in the PHP file :-(

Yani, sadece durumda, JS dosyasında bir "varsayılan değeri" olması için iyi bir fikir olabilir ...


Also, you have to have a good namming convention, to not have several files using/declaring/depending on the same JS variable ; it might be a good idea, actually, to put all your "configuration variables" inside a single javascript object, to not pollute the global namespace...

Eğer PHP ayrı senin Javascript tutmak istiyorsanız, o zaman sadece değişkenleri ayarlamak için Javascript küçük bir yığın oluşturmak için bir PHP dosyası kullanın. . Sonra js dosyasından bu değişkenleri kullanın:

HTML:

<script>
var INITIAL_POSTS = <?php echo get_posts(0,$_SESSION['posts_start']); ?>;
</script>
<script src="my.js">

my.js JavaScript dosyası:

//when the DOM is ready  
$(document).ready(function(){  
    //settings on top  
    var domain = 'http://davidwalsh.name/';  
    var initialPosts = INITIAL_POSTS;  
    //function that creates posts  
    var postHandler = function(postsJSON) {  
        $.each(postsJSON,function(i,post) {

Her zaman php "yazma" yerine statik-orada durdurmak için hiçbir şey olmak zorunda javascript dosya olabilir <script src="script.php"> ...

Tüm JavaScript ve PHP karıştırma gerekmez o işlemek için iki temel yolu vardır:

  1. PHP sayfasını oluşturuyor, bu (ya da başka sayfada) form üzerinde gizli bir girişi içine çıktı (get_posts(0,$_SESSION['posts_start']); yazmak var. JavaScript sonra kolayca bu erişebilirsiniz
  2. JavaScript AJAX ile ayrı bir PHP isteği o çıktı getirsin.

O (dinamik diğer içeriği güncelleme olmayacak çünkü, ya da bu değişiklikleri eğer umurumda değil) ziyaretçi sayfa tarama sırasında değişmez değer tür ise, genellikle, sayfasına doğrudan yazmak.

JavaScript ve jQuery sonra gibi bir kod ile kolayca değerini getirebilir

var initialPosts = $("#that-hidden-field-mentioned-earlier").val();

Birisi temiz bir cevap düşene kadar:

Eğer php / html dosyasında genel bir js değişken tanımlamak, ve komut başvurabilirsiniz:

php / html:

<script>
var global = <?php echo get_posts(0,$_SESSION['posts_start']); ?>;
</script>

js:

...
var initialPosts = global;
...