关于将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,所以我知道该怎么做。
先谢谢大家帮忙
答案 0 :(得分: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...
}
答案 1 :(得分:0)
您需要将数组输出为有效的JavaScript,请使用json_encode
GetAllIDs(<?php echo json_encode($ArrayIDs); ?>)