为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

HUX布斯 2023-04-27 16:12:24
我的文件中有以下代码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代码发送一个简单的字符串值怎么办?目前有什么问题吗?任何帮助表示赞赏!谢谢!
查看完整描述

4 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

你可以做:


<!DOCTYPE html>

<html>

<head>

  <title>Payment Receipt</title>

</head>


<body>


<?php

...

if($row) {

    $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 { 

//your else condition

}

?>

</body>

</html>


查看完整回答
反对 回复 2023-04-27
?
千万里不及你

TA贡献1784条经验 获得超9个赞

尝试这个


<!DOCTYPE html>

<html>

<head>

  <title>Payment Receipt</title>

</head>


<body>


<?php

...

if($row) {

    $myValue = 'Hi there!'

?>

<script>

var msg = "<?php $myValue; ?>";


</script>

<?php } else { 

  echo 'Incorrect Value';

}

?>

</body>

</html>


查看完整回答
反对 回复 2023-04-27
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

简化你的代码(调试时你应该总是这样做!)你有这个:


$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等



查看完整回答
反对 回复 2023-04-27
?
长风秋雁

TA贡献1757条经验 获得超7个赞

为了更好地管理代码,您可能应该将 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>


查看完整回答
反对 回复 2023-04-27
  • 4 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信