2011-06-02 29 views
1

考慮一下這個簡單的例子;Javascript中的PHP變量

<?php $text = test; ?> 

<script type="text/javascript" defer="defer"> 

var test; 

test = "<?php echo $text; ?>" 

$(document).ready(function(){ 
alert(test); 
}); 

</script> 

這工作正常。使用php var中的文本創建警報。但是,如果我放置;

<?php $text = test; ?> 

下面的腳本 - 它不起作用。我試過了延期功能。我究竟做錯了什麼?

乾杯

+0

你想要做什麼?你是否試圖在PHP中獲得JavaScript變量'test'的值? – 2011-06-02 12:12:35

+0

但是你想在哪裏放置php變量?如果你把它放在警報或警報方法之前,那麼它應該可以工作... – Cata 2011-06-02 12:12:37

+0

請注意'<?php $ text = test;除非你有一個常量'test',否則在任何情況下都是錯誤的。你應該設置一個合適的字符串:'<?php $ text ='test'; ?>'。如果你認爲你指的是JavaScript變量'test',如果你把該行放在最後,那麼你錯了。在這種情況下請參閱@昆汀的答案。 – 2011-06-02 12:19:14

回答

6

如果你把

<?php $text = "test"; ?> 

JS代碼的下方,該變量$文本還沒有確定,所以你不能附和它腳本較早編輯) 。

+0

你是什麼意思'$ text'沒有定義?該代碼定義它! (好吧,它試圖這樣做,但是因爲分配'test'會出錯(除非你定義了一個名爲'test'的常量),它會中斷)。事實上,回想起來,整個問題並沒有太大的意義,因爲它聲稱事情有效,即使它們應該是錯誤的。 – Quentin 2011-06-02 12:14:47

+0

@Quentin:如果沒有常量'test',則PHP將其解釋爲字符串'test'。這就是爲什麼如果這行放在'<?php echo $ text; ?>'但顯然它不會'迴應'任何東西,如果它被放在它之後(這是OP的嘗試)。 OP的真正想要做什麼只是不清楚(考慮到'test'的含糊性,你的回答也是有道理的)。無論如何,downvote是不合理的(無論誰這樣做)。 – 2011-06-02 12:16:42

+0

閱讀他帖子的後半部分。他提到將$測試定義移至javascript之下。所以,當echo $ test發生時,$ test沒有被定義。 – 2011-06-02 12:17:21

1

似乎你想要分配一個客戶端變量到服務器端變量?

由於我的知識,服務器端變量可以直接與客戶端變量進行「交互」,而不需要任何介入。這意味着<?php $test = test; ?>因爲包含在<?php ?>變量將被視爲服務器端的變量,因此,您的客戶端變量test要麼視爲

  • 一個未定義的常量,或
  • 不能正常工作
  • 沒有引號''
0

主要涉及兩個計算機字符串,web服務器(它處理PHP)和用戶的瀏覽器(它處理JavaScript的)。所以,不,你不能將一個javascript變量傳回給php,而無需將該變量的值從用戶瀏覽器發送到Web服務器(通常通過發佈表單或Ajax完成)。