如何混合使用PHP和Javascript变量?

时间:2015-07-22 01:25:47

标签: javascript php html mysql

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

        $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页面加载时完成。在ADD TEAM页面上,有一个选项可以使用他们之前可能输入的其中一个联赛的默认设置。因此,在我们的示例中,用户将输入他作为可用选项输入的三个联赛的下拉列表。如果他选择名为&#34; Best League Ever&#34;的联盟,它会自动将联赛类型更改为Re-Draft,PPR的得分选项,以及雅虎的网站(在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(有史以来最好的联赛),它会通过&#34; 3&#34;,然后我想在下面的javascript中使用...

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

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

}

在你正确地对我大吼大叫之前,我知道我的问题在于嵌套在Javascript中的PHP代码。非常肯定混合使用php和javascript是一种可怕的做法,但不知道如何处理这个问题。

简单地说明一点,我想将存储在PHP变量$ leaguescoring3(即&#34; ppr&#34;)中的数据传递到上面的javascript位,将联盟评分单选按钮更改为PPR选项(,因为它的ID为&#34; ppr&#34; )。所以说完所有内容后,我希望它能在代码中显示为......

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

我试图把那个javascript变量(称为&#34; leaguenum&#34;,它正在存储正确的选择值btw)重新放回PHP片段中,我感到非常困惑。似乎非常错误/愚蠢,所以我必须以错误的方式解决这个问题。

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

对此任何方面的任何帮助都将完全赞赏。

由于

2 个答案:

答案 0 :(得分:1)

您可以使用json_encode并将其打印到<script>代码

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

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

答案 1 :(得分:0)

您可以使用:

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

然后从这个div中取出json:

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