2013-08-01 42 views
0

我在一個Wordpress頁面中加載了一些jquery,jquery按照我想要的方式工作,但是現在我需要讓jquery只有在存在php變量時纔會觸發。在jquery中使用php變量來執行jquery

在PHP中我只是做:

if($foo) { 
    do this; 
} 

在WordPress我排隊包含這個文件bla.js:

jQuery(document).ready(function($){ 
    $('#someID.some-class > a').append('<div class="caption"></div>'); 
    $(".caption").text("Add this text"); 
}); 

我很困惑,如何添加php的檢查如果$ foo退出。似乎有幾種方法,但我最終所做的是產生意想不到的令牌錯誤。

+0

Theer很多方法可以做到這一點,如果你的JavaScript代碼是從你的PHP代碼中分離出來,你可能需要考慮一個Ajax調用,調用一個函數,從服務器端,你也可以把它在URL作爲GET變量。 –

回答

0

將Javascript條件放入PHP條件中。

<script type="text/javascript> 
... 
<?php 
if ($foo) : ?> 

    jQuery(document).ready(function($){ 
     $('#someID.some-class > a').append('<div class="caption"></div>'); 
     $(".caption").text("Add this text"); 
    }); 

<?php endif ?> 
... 
</script> 
+2

沒有腳本標籤? –

0

JavaScript只存在於其瀏覽器中的客戶端計算機上; PHP只存在於遠離瀏覽器的服務器上,所以你的JS不能只使用PHP變量。你可以這樣做兩種方式:

只有包括JS如果變量是正確的:

<?php if ($foo) : ?> 
jQuery(document).ready(function($){ 
    $('#someID.some-class > a').append('<div class="caption"></div>'); 
    $(".caption").text("Add this text"); 
}); 
<?php endif; ?> 

或者設置爲從PHP變量JS變量:

jQuery(document).ready(function($){ 
    var foo = <?php echo $foo; ?>; 
    if (foo) { 
     $('#someID.some-class > a').append('<div class="caption"></div>'); 
     $(".caption").text("Add this text"); 
    } 
}); 

注意,在這兩種情況下,該頁面是使用PHP在服務器上「創建」的。一旦它顯示在瀏覽器中,就不能使用PHP變量。如果你需要調用另一個PHP頁面來檢查一些額外的東西,看看Ajax。

0

所以php是一種服務器端語言,javascript是一種前端語言。所以基本上PHP運行,然後JavaScript運行...所以基本上如果$ foo存在輸出你想運行的jquery,它會顯示在前端。如果它不存在,你想運行輸出不同的jQuery ....這裏是簡單的例子...

<!-- JS --> 
var foo = <?php echo $foo; ?> 
if (foo == 'test'){ 
} else { 

} 
// More PHP based 
if ($foo == "test"){ ?> 
javascript function() <!-- Note how I closed php --> 
<? } else { ?> 
javascript function2() 
<? } ?> 
0

PHP和jQuery(這是寫在Javascript框架)運行完全不同的範圍。

  1. PHP在服務器上執行,產生結果是HTML頁面(其中可能會包括一些JavaScript代碼)。

  2. 生成的頁面然後從服務器傳遞到瀏覽器,當瀏覽器呈現它時,將執行jQuery/Javascript。

關鍵部分是PHP代碼實際上是生成HTML和Javascript代碼。

所以,如果你想只有一個PHP變量存在運行一些jQuery代碼:

<?php 
if($foo) { 
?> 
    <script type="text/javascript"> /* Some jQuery stuff here */ </script> 
<?php 
} else { 
?> 
    As an example, I generate this text in the "else" condition. 
<?php 
} 
?> 

如果$foo爲真,那麼PHP將會產生此HTML:

<script type="text/javascript"> /* Some jQuery stuff here */ </script> 

否則, PHP會產生這樣的:

As an example, I generate this text in the "else" condition. 

請記住,上ce PHP已將頁面交付給瀏覽器,它不再運行,並且生成的結果將是「永久」的。在這一點上,頁面被加載到瀏覽器DOM(文檔對象模型)中,並且DOM只能通過Javascript進行更改。

0

平時我只需要創建一個隱藏的輸入,像這樣:

<input type='hidden' id='some_id' value='the_value'> 

請注意,我不加名字屬性,以便它不會發布(如果它恰好是這樣的形式)。 然後你可以通過它的id使用jQuery訪問它。

if($('#some_id').val() == what_you_want) 
{ 
    do_something(); 
}