【问题标题】:How to mix PHP and Javascript variables, if at all?如果有的话,如何混合 PHP 和 Javascript 变量?
【发布时间】:2025-11-22 12:55:02
【问题描述】:

我会尽量保持这个简单,但它是一个笨蛋。我正在使用 PHP 从 MySQL 获取数据,并且正在为梦幻足球联赛信息创建变量。用户可以存储一个梦幻联赛的数据,或者他可以添加 20 个联赛的数据。因此,当 ADD TEAM 页面加载时,我会获取所有用户联赛的数据(使用可以正常工作的标准 mysql 查询)并创建变量,每个变量都附加一个数字以保持它们的唯一性......

        $l=1;
        while ($row = mysqli_fetch_assoc($savedleagues)) {
           ${"leaguescode".$l} = "<option value='$l'>". $row['fantasyleaguename'] . "</option>";
           ${"leaguetype".$l}=$row['leaguetype'];
           ${"leaguescoring".$l}=$row['scoring'];
           ${"leaguewebsite".$l}=$row['leaguewebsite'];
        $l++;
        }

因此,完成此操作后,假设用户保存了三个联赛。现在会有 PHP 变量,例如...

$leaguescode1="<option value='1'>My Brothas League</option>"
$leaguetype1="redraft";
$leaguescoring1="std";
$leaguewebsite1="ESPN";
$leaguescode2="<option value='2'>Fake Football League</option>"
$leaguetype2="keeper";
$leaguescoring2="ppr";
$leaguewebsite2="CBS";
$leaguescode3="<option value='3'>Best League Ever</option>"
$leaguetype3="redraft";
$leaguescoring3="ppr";
$leaguewebsite3="Yahoo";

还和我在一起吗?哇,谢谢,我们继续……

所有变量创建都是在加载 ADD TEAM 页面时完成的。在添加球队页面上,有一个选择选项可以使用他们之前可能进入的联赛之一的默认设置。因此,在我们的示例中,用户将有一个下拉列表,其中包含他输入的三个联赛作为可用选项。如果他选择了名为“Best League Ever”的联赛,它会自动将联赛类型更改为 Re-Draft,将计分选项更改为 PPR,并将网站更改为 Yahoo(在 ADD TEAM 页面上的表格上)。 Select 选项是这样生成的...

echo "<div id='league' class='question'><span class='bold'>Assign to League?:</span>
         <select name='fantasyleague' id='fantasyleague' onChange='setLeagueDefaults(this);'>
         <option value='0'>Not assigned</option>";
         for ($i=1; $i<$l; $i++) {
             echo ${"leaguescode".$i};
         }
        echo "</select>
        </div>";

如您所见,我希望在用户使用...更改选择选项时更改设置。

onChange='setLeagueDefaults(this);'

因此,如果他们选择联赛 3(有史以来最好的联赛),它将通过“3”,然后我想在下面的 javascript 中使用它...

function setLeagueDefaults(sel) {
        var leaguenum = sel.value;  

        document.getElementById("<?php echo ${"leaguescoring".leaguenum};?>").checked = true;

}

在你理所当然地对我大喊大叫之前,我知道我的问题在于嵌套在 Javascript 中的 PHP 代码。很确定混合使用 php 和 javascript 是一种可怕的做法,但不知道如何解决这个问题。

简单地举个例子,我想将存储在 PHP 变量 $leaguescoring3(即“ppr”)中的数据传递到上面的 javascript 位中,以将联赛得分单选按钮更改为 PPR 选项(因为它的 ID 为“ppr”)。所以当一切都说完了,我希望它在代码中显示为......

document.getElementById("ppr").checked = true;

试图将那个javascript变量(称为“leaguenum”,它存储正确的选择值btw)放回PHP sn-p时,我感到非常困惑。似乎非常错误/愚蠢,所以我一定是走错路了。

如果有人足够聪明/疯狂地理解我试图解释的内容,并且可以为我指出更好的方向,请告诉我。

任何方面的帮助都将不胜感激。

谢谢

【问题讨论】:

  • JSON 和 AJAX 是它的所在。谷歌一下。

标签: javascript php html mysql


【解决方案1】:

您可以使用json_encode 并将其打印到&lt;script&gt; 标签中

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

<script type="text/javascript">
var test = <?php print(json_encode($test)); ?>
</script>

【讨论】:

    【解决方案2】:

    你可以使用:

    <div id="test" style="display:none">
    <?php
    echo json_encode($myPhpData);
    ?>
    </div>
    

    然后从这个 div 中获取 json,例如:

    var obj = $.parseJSON($('div#test').html());
    

    【讨论】: