2012-09-02 190 views
1

關於發送PHP數組到javascript函數的小問題,我做了家庭作業,無處不在,我知道它不可靠,但在這一刻我不知道任何其他方式,所以嘗試只是告訴我如何完成它。發送php數組到javascript函數onclick

我得到的PHP代碼首先執行,想法是在頁面加載我從MySQL獲取一些數據,我填充了從該選擇語句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中的螢火蟲調試代碼時,我得知我的'Ticket'參數假設爲'$ ArrayIDs'未定義。

爲什麼我想製作數組並將其發送到javascript onclick事件的原因是檢查用戶是否已對某些遊戲下注,如果他確實要發送所有數據以進行更新,並且他尚未下注在某些遊戲中發送數據插入數據庫。 所以我需要數組,並在任何事情之前檢查MatchID與我的數組中的所有ID,所以我知道該怎麼做。

感謝所有提前幫忙

+0

您需要使用JSON從PHP傳遞數組的JavaScript – Tarun

+0

而且是使用mysqli_或PDO,而不是mysql_ – Tarun

回答

1

你的腳本可以用一點清理工作要做,但在本質上,你需要改變

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

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

我還reccomend不輸出

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

用於在MySQL的每一行,而不是創建值的單個陣列和在循環之後創建一個腳本。使用mysql_fetch_row而不是mysql_numrows和mysql_result可能更合適。

while ($row = mysql_fetch_row($result)) { 
    //...do things here... 
} 
+0

終於.... '的onclick =「GetAllIDs(<?PHP的echo json_encode($ ArrayIDs )?>)「>' 是關鍵....我會google更多關於json_encode,謝謝你幫助我如此之快 – Veljko89

+0

不用擔心,很高興我能幫上忙。 – thelastshadow

0

你需要輸出數組作爲有效的JavaScript,使用json_encode

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