2012-05-19 34 views
6

是否有我可以在JQuery腳本中使用php變量?在JQuery中使用PHP變量

例子:

  • PHP變量:$sr2
  • jQuery腳本的摘錄(可變):$('#a2_bottom_$sr2')

我怎樣才能使這樣的變量是有效在JQuery的一部分嗎?

謝謝

+3

凡位於jQuery代碼?在PHP文件內還是在單獨的.js文件中? –

+0

它與json_encode的PHP –

回答

8

你可以簡單地做的就是使用你的PHP來回顯代碼來啓動Java腳本變量。

<script type="text/javascript"> 
<?php 

    $phpVar = "foo"; 
    echo "var phpVariable = '{$phpVar}';"; 

?> 
</script> 

一旦PHP代碼解析和HTML發送到用戶 - 所有他們將看到的是PHP回聲的結果 -

<script type="text/javascript"> 
    var phpVariable = 'foo'; 
</script> 

現在你phpVariable是提供給您的JavaScript !所以,你使用它,就像您在任何其他情況下 -

$("div."+phpVariable); 

這將檢索我們一個foo類中的任何<div>元素 -

<div class="foo"></div> 
+0

它真的很老,但現在我得到你的代碼中的錯誤 「未捕獲的SyntaxError:意外的令牌<」 –

+0

@IrtzaShahan - 這意味着將該變量插入到JavaScript時出現錯誤。確保你用引號包裝你的php變量,以便你在頁面上回顯的最終結果看起來像普通的javascript。請記住,瀏覽器仍然需要閱讀並使用您創建的JavaScript值。 – Lix

9

PHP在服務器上運行,jquery在客戶端上運行。如果你想要一個PHP變量可用於jQuery(以及擴展,底層的javascript引擎),你必須在服務器上輸出頁面時發送變量的值,例如,

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

或通過AJAX調用檢索值,這意味着您基本上正在創建一個web服務。

+3

+1位於同一個文件中;我認爲如果我們要討論打印一個變量作爲JS代碼,我們討論如何避免打破它,這是至關重要的:) – Kato

2

假設你的jQuery是在同一個文件:

... $('#a2_bottom_<?php echo $sr2 ?>') ... 
+0

工作正常......除非'sr2'包含引號字符,空格等。 – Spudley

+1

但是既然它是ID的一部分,無論如何它都不能包含這些字符。 –

+0

;如果'$ sr2'變量包含任何這些字符,無論是偶然還是故意的黑客攻擊,它都會使jQuery代碼行無效。至少,使用'json_encode()'來確保它是有效的語法,但在這種情況下,可能還需要進一步的驗證,例如剝離空格等。 – Spudley

5

你可以將它輸出作爲腳本標籤頁的一部分...即

<script type="text/javascript"> 
<?php 
echo "var sr2 = \"" . $sr2 . "\""; 
?> 
</script> 

那麼你的jQuery的行會能夠訪問它:

$('#a2_bottom_' + sr2) 
+1

爲了安全起見,在將變量回顯給您時使用'json_encode()' JavaScript,但基本上這是正確的答案。 – Spudley