簡體   English   中英

發送php數組到javascript函數onclick

[英]sending php array to javascript function onclick

關於將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'並從腳本中執行代碼

這是代碼im調用腳本

<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調試代碼時,我得到了我的'Ticket'參數,該參數假定為'$ ArrayIDs'是未定義的。

我想制作數組並將其發送到javascript onclick事件的原因是檢查用戶是否已經在某個游戲上下了賭注,他是否願意發送所有數據以進行更新以及是否還沒有在某個游戲上下注到發送數據以插入數據庫。 所以我需要數組,然后才需要檢查數組中所有ID的MatchID,所以我知道該怎么做。

預先感謝大家的幫助

您的腳本可以進行一些清理,但是本質上您需要進行更改

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...
}

您需要將數組輸出為有效的JavaScript,請使用json_encode

GetAllIDs(<?php echo  json_encode($ArrayIDs); ?>)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM