PHP JavaScript veya jQuery değişkenleri yerine ulaşmak için nasıl

6 Cevap php

Nasıl JavaScript veya jQuery PHP değişkenleri erişebilirim? Ben yazmak zorunda mı

<?php echo $variable1 ?>
<?php echo $variable2 ?>
<?php echo $variable3 ?>
...
<?php echo $variablen ?>

Ben kurabiye bazı değişkenleri saklayabilirsiniz biliyorum, ve kurabiyeler ile bu değerleri erişmek, ancak çerezleri değerler nispeten istikrarlı değerlerdir. Ayrıca, bir sınırı vardır, çerez birçok değerleri saklamak edemez ve yöntem bu uygun değildir. Bunu yapmak için daha iyi bir yolu var mı?

6 Cevap

Sizin örnek JavaScript PHP değişkenleri geçen en basit yol gösterir. Ayrıca diziler gibi daha karmaşık şeyler için json_encode kullanabilirsiniz:

<?php
    $simple = 'simple string';
    $complex = array('more', 'complex', 'object', array('foo', 'bar'));
?>
<script type="text/javascript">
    var simple = '<?php echo $simple; ?>';
    var complex = <?php echo json_encode($complex); ?>;
</script>

Eğer gerçekten PHP ve JavaScript arasındaki "etkileşim" isterseniz o dışında, Ajax kullanmanız gerekir.

Using cookies for this is a very unsafe and unreliable way, as they are stored clientside and therefore open for any manipulation or won't even get accepted/saved. Don't use them for this type of interaction. jQuery.ajax is a good start IMHO.

AJAX bir seçenek değilse kolaylaştırmak için iç içe veri yapılarını kullanabilirsiniz.

<?php
$var = array(
  'qwe' => 'asd',
  'asd' => array(
    1 => 2,
    3 => 4,
    )
  'zxc' => 0,
  ); ?>
var data = <?php echo json_encode($var); ?>;

I () JavaScript kaynak koduna doğrudan ing en güvenilir ve doğru uyumludur yoldur yankı söyleyebilirim. Eğer değil iyi bir nedeniniz olmadıkça kal.

Temel olarak, evet. Sen yazmak alert('<?php echo($phpvariable); ?>');

Orada birbirleri için emin başka yolları vardır, ama yukarıdaki gibi basit (veya daha iyisi) olma aklınıza gelebilecek hiçbiri.

Bir iki parçalı bir soru tür soruyorsun. Bildiğim kadarıyla sözdizimi olarak (ben PHP4 beri düşünüyorsun?) Kullanabilirsiniz:

<?=$var?>

... PHP izin için yapılandırılmış ise. Ve en sunucularında olduğunu.

Bildiğim kadarıyla kullanıcı verilerini depolamak gibi, aynı zamanda oturumda depolama seçeneği var:

$_SESSION['bla'] = "so-and-so";

sayfa sayfa kalıcılık için. Ayrıca tabii ki bir veritabanı kullanabilirsiniz. Hatta db PHP mağaza oturum değişkenleri olabilir. Sadece ne gerek bağlıdır.

Ben üzerinde çalışıyorum bir site için özel bir sayfalama oluştururken Ben benzer bir sorunu içine koştu.

Ben functions.php oluşturulan global değişken 0'a tanımlanmış ve kurulmuştur. Benim javascript hiçbir sorun çıktı bu değer olabilir Karsten yukarıda özetlenen @ yöntemini kullanarak. Sorunu ben başlangıçta PHP dosyası içinde 0'a set genel değişkeni güncelleme ile oldu.

İşte benim geçici çözüm (hacky biliyorum?!) Ama sıkı bir süre aşağıdaki eserlerini bir saat uğraştıktan sonra:

Inside archive-episodes.php:

<script>
    // We define the variable and update it in a php
    // function defined in functions.php
    var totalPageCount; 
</script>

Inside functions.php

<?php
    $totalPageCount = WP_Query->max_num_pages; // In my testing scenario this number is 8.
    echo '<script>totalPageCount = $totalPageCount;</script>';
?>

Basit tutmak, ben uyarının üzerinden bir $ajax.success geri arama totalPageCount değişken çıkarılırken edildi.

$.ajax({
        url: ajaxurl,
        type: 'POST',
        data: {"action": "infinite_scroll", "page_no": pageNumber, "posts_per_page": numResults},
        beforeSend: function() {
            $(".ajaxLoading").show();
        },
        success: function(data) {
                            //alert("DONE LOADING EPISODES");
            $(".ajaxLoading").hide();

            var $container = $("#episode-container");

            if(firstRun) {
                $container.prepend(data);
                initMasonry($container);
                ieMasonryFix();
                initSearch();
            } else {
                var $newItems = $(data);
                $container.append( $newItems ).isotope( 'appended', $newItems );
            }
            firstRun = false;

            addHoverState();                            
            smartResize();

            alert(totalEpiPageCount); // THIS OUTPUTS THE CORRECT PAGE TOTAL
        }

O olabilir gibi olun, ben bu başkalarına yardımcı olur umarım! Herkes bir "az-hacky" sürümünü ya da en iyi uygulama örneği varsa ben bütün kulaklar değilim.