正如其他人所提到的,您不能直接在 HTML 中使用 PHP,因此您需要在 PHP 代码块中转义所有这些变量。如果这是我的代码,我会考虑重构一下,这样我就可以使用 JSON 编码的参数,例如:
<?php
$rawData = array('id'=>$id, 'first'=>$first, 'last'=>$last, ... );
$hitData = json_encode($rawData);
?>
<button onclick="addHit(<?php echo $hitData ?>)">Checkin</button>
function addHit(inputData)
{
$.ajax({
type: "POST",
url: "checkinuser.php",
data: inputData
success: function(msg) {
alert( "Checked In! " + msg );
}
});
}
作为对您的编辑的回应,如果您想保留参数的方式,我会修改您的 while 循环:
<?php
$i=0;
while ($i < $num) {
$id=mysql_result($result,$i, "StudentID");
$first=mysql_result($result,$i,"First");
$last=mysql_result($result,$i,"Last");
$date= date("Y.m.d");
?>
<div id='list'>
<div id='id'>
<?php echo $id?>
</div>
<div id='name'>
<?php echo "$first $last" ?>
<button onclick='addHit( <?php echo "$id,$first,$last,$classname,$day,$times,$date" ?> )'
Checkin
</button>
</div>
</div>
<?php
$i++;
}
?>
这里的目标是使读/写更容易,因此尽可能将静态代码(例如 HTML)与动态代码分开可能是一件好事。一个很大的优点是您不必像您一样担心转义引号,尽管缺点是有相当数量的<?php>
块。
另请注意,您正在为所有这些 div 设置 id='id' ,这将不起作用,因为当 id 在给定页面上需要唯一时,它们都将共享一个 id。你可能也想去echo $id
那里。
同样,没有理由将其echo"</div></div></div></div>";
移到 PHP 块之外,并将其保留为 HTML。
最后,在您的 javascript 中,您的 data 参数是文字字符串:
"id=id&first=first&last=last&classname=classname&day=day×=times&date=date"
这将不起作用,因为 id 字面意思是“id”,first 将是“first”,等等。
您需要使用我上面的方法(在其中传递整个参数),或者构建要作为数据参数传递的对象。 .ajax()
将获取对象,因此我将其设为对象,然后将其传递,例如:
function addHit(id, first, last, classname, day, times, date)
{
inputData = { id: id, first: first, etc, etc}
$.ajax({
type: "POST",
url: "checkinuser.php",
data: inputData,
success: function(msg){
alert( "Data Saved: " + msg ); //Anything you want
}
});
}