1

关于将 PHP 数组发送到 javascript 函数的小问题,我做了功课,到处看了看,我知道这样做不可靠,但目前我不知道任何其他方法,所以试着建议我如何完成它。

我首先执行 php 代码,想法是在页面加载时我从 MySQL 获取一些数据,我用该 select 语句中的 ID 填充 php 数组。

<?php
include('config.php');
$TicketExist = "select BetSlipID,probatip1.betslips.MatchID as GameID, 
TipID,tim1.Name AS HomeTeam ,tim2.Name AS AwayTeam, UserID 
from probatip1.betslips
inner join probatip1.matches matches on probatip1.betslips.MatchID = matches.MatchID
inner join probatip1.teams tim1 on matches.HomeTeamID = tim1.TeamID
inner join probatip1.teams tim2 on matches.AwayTeamID = tim2.TeamID
where UserID = 1";

$TicketResult = mysql_query($TicketExist);
$TicketNum = mysql_numrows($TicketResult);

mysql_close();

if($TicketNum != 0)
{
$s=0;
while($s < $TicketNum)
{       

    $GameID = mysql_result($TicketResult,$s,"GameID");
    $TipID = mysql_result($TicketResult,$s,"TipID");    
    $ArrayIDs[$s] = $GameID;
    echo "<script>window.onload=GetInfo($GameID,$TipID); </script>";
    $s++;
}
} 
?>

所以我得到了我想要填写并写在我的页面上的所有内容,现在的想法是用户点击,调用javascript来获取这个'$ArrayIDs'并从脚本执行代码

这是即时调用脚本的代码

<ul>
<li 
id="ConfirmButton" name="Insert" method="post" 
onclick="GetAllIDs(<?php $ArrayIDs ?>)"><a>POTVRDI</a></li>
</ul>

还有我的脚本代码

function GetAllIDs(Ticket) {
$("td.ID").each(function () {

    var MatchID = $(this).attr('id');
    var lab = "Label";

    var Label = lab + MatchID;

    var Final = document.getElementById(Label);

    var TipID;

    if (Final.innerHTML == '1') {
        TipID = 1;
    }
    else if (Final.innerHTML == 'X') {
        TipID = 2;
    }
    else if (Final.innerHTML == '2') {
        TipID = 3;
    }
    else {
        return;
    }


    var request_type;
    var browser = navigator.appName;


    if (browser == "Microsoft Internet Explorer") {
        request_type = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else {
        request_type = new XMLHttpRequest();
    }

    var http = request_type;

    var AlreadyPlayed = false;

    if (Ticket != null) {
        var TicketExists = Ticket;
        for (var i = 0; i < TicketExists.length; i++) {
            if (TicketExists[i] == MatchID) {
                AlreadyPlayed = true;
                break;
            }
        }
    }

    if (http != null) {

        if (AlreadyPlayed == true) {
            http.open('get', 'update.php?MatchID=' + MatchID + 
            '&TipID=' + TipID + '&UserID=' + 1, true);
        }
        else {
            http.open('get', 'insert.php?MatchID=' + MatchID + 
            '&TipID=' + TipID + '&UserID=' + 1, true);
        }
        http.send(null);
    }
});

if (Ticket == null) {
    alert('Tiket je napravljen');
}
else {
    alert('Tiket je promenjen');
}
}

使用这个发布的代码,当我在 mozzila 中使用 firebug 调试代码时,我发现我的假设为 '$ArrayIDs' 的 'Ticket' 参数是未定义的。

我想制作数组并将其发送到javascript onclick事件的原因是检查用户是否已经在某个游戏上下注,如果他这样做我想发送所有数据以进行更新,以及他是否还没有下注某个游戏到发送数据以插入数据库。所以我需要数组,然后再检查 MatchID 和我数组中的所有 ID,所以我知道该怎么做。

提前感谢大家的帮助

4

2 回答 2

1

你的脚本可以做一些清理工作,但本质上你需要改变

onclick="GetAllIDs(<?php $ArrayIDs ?>)">

onclick="GetAllIDs(<?php echo json_encode($ArrayIDs) ?>)">

我也建议不要输出

"<script>window.onload=GetInfo($GameID,$TipID); </script>";

对于 mysql 中的每一行,创建一个值的数组并在循环之后创建一个脚本。使用 mysql_fetch_row 而不是 mysql_numrows 和 mysql_result 可能更整洁。

while ($row = mysql_fetch_row($result)) {
    //...do things here...
}
于 2012-09-02T18:35:36.380 回答
0

您需要将数组输出为有效的 JavaScript,使用json_encode

GetAllIDs(<?php echo  json_encode($ArrayIDs); ?>)
于 2012-09-02T18:35:09.227 回答