簡體   English   中英

從 JavaScript 回顯 PHP 變量?

[英]Echo PHP variable from JavaScript?

我也有一個帶有一些 JavaScript 代碼的 PHP 頁面,但是下面的這段 JavaScript 代碼似乎不起作用,或者我可能離題了!

我正在嘗試這樣的事情:

  var areaOption=document.getElementById("<?php echo @$_POST['annonsera_name']?>");
  areaOption.selected=true;

我也試過這個,但它只提醒一個空白的警報框:

    alert (<?php echo $test;?>); // I have tried this with quotes, double-quotes, etc... no luck

我在這里思考完全錯誤嗎?

更新

一些PHP代碼:

    <?php 
        $test = "Hello World!";
    ?>

在你的第二個例子中,你在字符串周圍缺少引號(所以 H 被解釋為一個變量 - 你沒有設置)。

測試這個:

alert (<?php echo "'H'";?>);

或者

alert ('<?php echo "H";?>');

PHP 在服務器端運行,Javascript 在客戶端運行。

過程是PHP生成將在客戶端執行的Javascript。

您應該能夠檢查僅查看代碼生成的 JS。 當然,如果 JS 依賴於一些 PHP 變量,則需要在 JS 輸出之前對其進行實例化。

<?php
$test = 'Hello world';
?>
<html>
    <body>
        <script>
            alert('<?php echo $test; ?>');
        </script>
    </body>
</html>

會工作,但

<html>
    <body>
        <script>
            alert('<?php echo $test; ?>');
        </script>
    </body>
</html>
<?php
$test = 'Hello world';
?>

將不會

使用json_encode將一些文本(或任何其他數據類型)轉換為 JavaScript 文字。 不要只在回顯的字符串周圍加上引號——如果字符串中有引號、換行符或反斜杠怎么辦? 最好的情況是您的代碼失敗,最壞的情況是您有一個很大的舊跨站點腳本安全漏洞。

所以,

<?php
    function js($o) {
        echo json_encode($o, JSON_HEX_TAG|JSON_HEX_APOS|JSON_HEX_QUOT|JSON_HEX_AMP);
    }
?>
<script type="text/javascript">
    var areaOption= document.getElementById(<?php js($_POST['annonsera_name']); ?>);
    areaOption.selected= true;
    alert (<?php js('Hello World'); ?>);
</script>

您使用@$_POST表示您收到(或預期)錯誤 - 檢查您生成的源以查看值是否正確輸出。 否則document.getElementById將失敗,您將得不到任何輸出。

 alert("Delete entry <? echo $row['id']; ?> ")

如果您的擴展名是 js,則 php 將無法在該文件中運行。

原因是,php 解析它應該解析的文件。 php 將解析的文件類型使用 AddType 命令(或指令,無論它們被調用)在 httpd.conf 中配置。

所以你有3個選擇:

  • 將文件類型 js 添加到 php 將解析的文件列表中(糟糕,非常糟糕)
  • 使腳本內聯到一些 php 文件
  • 將文件重命名為script.js.php,並在文件開頭指定內容類型,如下所示:

    <?php header( 'content-type: text/javascript' ); ?>

干杯!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM