猿问

如何将普通变量的值从 PHP 发送到 JavaScript?

我的文件中有以下代码test.php。该代码主要有一个在 PHP 中定义的变量,我想将它发送到 JavaScript 函数以便它可以 POST。这是代码:


<!DOCTYPE html>

<html>

<head>

  <title>Payment Receipt</title>

</head>


<body>


<?php

...

if($row) {

    $myValue = 'Hi there!'; //the PHP variable (currently has a sample value, but will be string only)


    //JS starts    


    echo <<<JS001

    <script type="text/javascript">

    var msg = {$myValue}; //trying to set it to a JS var, so I could send it to below function.

    var ThunkableWebviewerExtension = {

        postMessage: function (message) {

            if (window.ReactNativeWebView) {

                window.ReactNativeWebView.postMessage(message);

            } else {

                window.parent.postMessage(message, '*');

            }

        }

    };

    

    ThunkableWebviewerExtension.postMessage(msg);

    console.log(msg);

    alert('Message Sent');

    </script>

JS001;

    

} else {

    echo 'Incorrect Value';

}


?>


</body>

</html>

但是当我运行这段代码时,我在控制台上收到了这个错误:Uncaught SyntaxError: Unexpected identifier。如果我只想向JS代码发送一个简单的字符串值怎么办?目前有什么问题吗?


任何帮助表示赞赏!谢谢!


HUX布斯
浏览 106回答 4
4回答

杨__羊羊

你可以做:<!DOCTYPE html><html><head>&nbsp; <title>Payment Receipt</title></head><body><?php...if($row) {&nbsp; &nbsp; $myValue = 'Hi there!';?><script>var msg = "<?php echo $myValue; ?>"; //trying to set it to a JS var, so I could send it to below//Your remaining js script here ...</script><?php } else {&nbsp;//your else condition}?></body></html>

千万里不及你

尝试这个<!DOCTYPE html><html><head>&nbsp; <title>Payment Receipt</title></head><body><?php...if($row) {&nbsp; &nbsp; $myValue = 'Hi there!'?><script>var msg = "<?php $myValue; ?>";</script><?php } else {&nbsp;&nbsp; echo 'Incorrect Value';}?></body></html>

幕布斯6054654

简化你的代码(调试时你应该总是这样做!)你有这个:$myValue = 'Hi there!';echo <<<JS001<script type="text/javascript">var msg = {$myValue};</script>JS001;如果您查看返回给浏览器的 HTML,您会发现它看起来像这样:<script type="text/javascript">var msg = Hi there!;</script>浏览器不知道“你好!” 应该是一个字符串,所以它试图将它作为代码执行。你想要的输出是这样的:<script type="text/javascript">var msg = 'Hi there!';</script>所以我们需要将这些引号添加到 PHP 中:$myValue = 'Hi there!';echo <<<JS001<script type="text/javascript">var msg = '{$myValue}';</script>JS001;作为更通用的解决方案,您可以滥用 JSON 字符串是有效的 JS 值这一事实,并json_encode在 PHP 中使用:$myValue = 'Hi there!';$myValueJson = json_encode($myValue);echo <<<JS001<script type="text/javascript">var msg = {$myValueJson};</script>JS001;这在这种情况下没有区别,但对于传递其他类型的值很有用 - 数组null等

长风秋雁

为了更好地管理代码,您可能应该将 HTML、PHP 和 JS 代码分开放在不同的文件中。想象一下这样的事情:控制器.php$displayName="David";include 'vue.php';vue.php<html>...<body><div id="php-data" data-displayName="<?php echo $displayName ?>"></div></body></html>脚本.js<script>var msg = document.getElementById('php-data').dataset.displayName // "David";</script>
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答