2013-12-16 170 views
-2

我在使用php中的變量在javascript中遇到問題,並且在使用php中的javascript變量時遇到了問題。我們可以在php代碼中使用javascript變量和javascript變量嗎?

$UpdateText="updateReTotal(Tills,'pos_cash','{$till->till_id}');updateVariance('{$till->till_id}')"; 

echo '<script type="text/javascript">' 
    , 'testFunctionForUpdateTotal(.$UpdateText.);' 
    , '</script>'; 
+0

你永遠不應該直接從PHP輸出到JavaScript。 PHP數據中的一個'''或其他JS-元字符,並且你用語法錯誤殺死了你的JS塊。總是通過'json_encode()'輸出,所以你至少可以生成有效的JS。 –

回答

2

你只是有一個引用問題。 :

​​

這就是爲什麼你應該避免使用echo報表輸出HTML一個很好的例子。 PHP設計,讓您可以嵌入到HTML中的PHP,你應該利用這個優勢:

$UpdateText="updateReTotal(Tills,'pos_cash','{$till->till_id}');updateVariance('{$till->till_id}')"; 
?> 
    <script type="text/javascript"> 
     testFunctionForUpdateTotal('<?= $UpdateText; ?>'); 
    </script>'; 
+1

'<?php echo $ UpdateText; ?>'優於短代碼<?= $ UpdateText;因爲在大多數生產環境中,默認情況下PHP短代碼是被禁用的。 – AeroX

+0

你確定嗎?從PHP 5.4起,它們將永久啓用。 –

+0

對於可移植性來說,長式是首選,因爲短標籤依賴於PHP 5.4+或啓用了短標籤設置http://stackoverflow.com/a/200666/2594742 – AeroX

0

如果使用級聯,你可以把PHP變量到的JavaScript代碼,您在使用級聯你已經迴音。

PHP無法看到的JavaScript變量,JavaScript是瀏覽器和PHP是在服務器上

你最好的選擇就是,傳回JavaScript變量

0

JavaScript是客戶端。 PHP是服務器端的。他們可以以某種方式說話,但並不總是那麼容易。

要在JavaScript中使用PHP變量,我必須說,簡單的方法是:

var phpVar = "<?php echo $myVar; ?>"; 

或者,通過呼應:

echo "var phpVar = '{$myVar}';"; 

但是,你很快就會意識到這將是印有點像一個常數。這隻能在頁面的渲染上完成,所以它有點有限。這真的是一樣,如果$myVar包含5,直接寫:

var phpVar = "5"; 

的結果是一樣的。在JavaScript中使用PHP var的另一種方法是使用AJAX - 獲取它。例如,使用jQuery:

$.get("/page_that_sends_my_var.php", { }, function(res) { 
    var phpVar = res; 
}); 

通過具有page_that_sends_my_var.php是這樣的:

<?php 
echo $myVar; 

但是,這將是異步的。所以,你有兩種不同的方法用於兩種不同的目的。第一個是同步的,只在頁面渲染時才起作用;第二個可以通過異步調用來工作。我可能總是使用第二種方法;它更加優雅,而且AJAX可以很好地執行/具有:它使您的應用程序更具動態性。

至於在PHP中使用Javascript變量,你也可以用兩種方法來完成。第一個是在表單提交期間使用表單並在表單數據中包含變量;另一個(我更喜歡)是使用AJAX調用PHP腳本,併發送變量。就像這樣:

$.post("page_that_uses_my_var.php", { "myVar" : myVar }, function(res) { 
    // do something if you like 
}); 

然後,在page_that_uses_my_var.php

<?php 
$jsVar = $_POST["myVar"]; 
相關問題