爲什麼在傳遞給javascript之前需要回顯PHP變量?將PHP數組傳遞給Javascript:爲什麼需要回顯PHP變量?
例如,
drawChart(600/50, <?php echo $day; ?>, ...)
爲什麼我需要的零件?爲什麼不只是做
drawChart(600/50, $day, ...)
?
謝謝
爲什麼在傳遞給javascript之前需要回顯PHP變量?將PHP數組傳遞給Javascript:爲什麼需要回顯PHP變量?
例如,
drawChart(600/50, <?php echo $day; ?>, ...)
爲什麼我需要的零件?爲什麼不只是做
drawChart(600/50, $day, ...)
?
謝謝
您提出的問題需要解釋一個強烈的概念問題。 PHP代碼是在Web服務器處理,被稱爲服務器端代碼,而JavaScript代碼的Web瀏覽器後服務器返回頁面的HTML,被稱爲客戶端代碼執行。所以,你在不同的平臺上有不同的執行階段。 JavaScript代碼無法評估PHP源代碼,也不瞭解PHP變量及其狀態。
在你的問題中的代碼代表一個JavaScript函數調用的參數之一正好是一個PHP變量。在瀏覽器收到它之前,PHP變量必須在服務器上進行評估,因此JavaScript調用將正常工作。如果$day
變量的值爲13
(對於示例的緣故),以下代碼:
drawChart(600/50,
<?php echo $day; ?>
, ...)
將被渲染到HTML這樣的:
drawChart(600/50,
13
, ...)
但是,如果你跳過PHP的東西,你會得到:
drawChart(600/50,
$day
, ...)
這可能不會在瀏覽器中運行。
此外,您可能有一個名稱爲$day
的JavaScript變量,因此代碼將使用它而不是PHP評估過的一個,甚至可以正常工作,但出現意外的行爲。
更新:這個一個更好的解釋在一箇舊問題的答覆是可用的。
What is the difference between client-side and server-side programming?
這混淆了很多Web開發人員早期。
你的PHP代碼運行服務器端。變量$day
在Web請求到達您的服務器時進行評估。
你的JavaScript代碼運行客戶端。從服務器的角度來看,這是一堆發送到用戶瀏覽器的靜態文本。然後瀏覽器將此靜態文本解釋爲代碼並執行它。
你不能「共享」,因爲在執行JavaScript的時間PHP和JavaScript之間的變量,你是在一個服務器運行PHP上下文不再。
因此,您使用echo
輸出$day
的值,而它是PHP上下文中的變量;它的值然後被注入到JavaScript中,它不再是客戶端上下文中的變量。 (相反,在你的例子這將是,如果你叫drawChart
用硬編碼值。)
應如何腳本知道你的意思'$ day'是一個PHP變量或JavaScript變量? – JJJ 2013-05-07 20:35:02
所以回聲傳遞值而不是變量給JS? – 2013-05-07 20:36:46