*更新
问题是有多个变量,我无法传递php回声。由于“冲突
,我不能只在php中运行脚本<?php
.....other stuff
$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");
echo "<div id=\"list\"><div id=\"id\">$id</div><div id=\"name\"> $first $last
<button onclick=\"addHit($id,$first,$last,$classname,$day,$times,$date)\">Checkin</button></div></div> ";
$i++;
}
echo"</div></div></div></div>";
?>
<script>
function addHit(id, first, last, classname, day, times, date)
{
$.ajax({
type: "POST",
url: "checkinuser.php",
data: "id=id&first=first&last=last&classname=classname&day=day×=times&date=date",
success: function(msg){
alert( "Data Saved: " + msg ); //Anything you want
}
});
}
</script>
答案 0 :(得分:3)
正如其他人所提到的,你不能直接在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 );
}
});
}
为了回应你的编辑,如果你想按照你的方式保留params,我会修改你的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中,你的数据参数是文字字符串:
"id=id&first=first&last=last&classname=classname&day=day×=times&date=date"
这不起作用,因为id确实是'id',首先是'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
}
});
}
答案 1 :(得分:2)
数据看起来不一样:
data: "id="+id+"&first="+first+"&last="+last+"&classname="+classname+"&day="+day+"×="+times+"&date="+date,
您还可以使用以下格式:
data : { id : id, first : first, last : last, classname : classname, day : day, times : times, date : date }
再加上mimiz说的话。
答案 2 :(得分:0)
您无法直接将PHP变量插入其他代码中。试试echo
。
<button onclick=\"addHit('<?php echo $id.","$first.",".$last.",",$classname.",".$day.",".$times.",".$date; ?>')\">Checkin</button>
答案 3 :(得分:0)
试试这个:
<button onclick=\"addHit(<?php echo " '$id', '$first' ,'$last','$classname','$day', '$times','$date'"; ?>)\">Checkin</button>
的问候;
mimiz
答案 4 :(得分:0)
尝试更改此内容:
type: "POST",
为此:
type: "GET",
你应该通过GET传递变量并在你的PHP代码中接收它们,因为它是通过url传递的。
答案 5 :(得分:-1)
addHit( '$ ID,$第一,$最后,$类名,$天,$次,$日期') 一定是 addHit($ ID,$第一,$最后,$类名,$天,$次,$日期)
(tnx to Musa)
数据:“id = id&amp; first = first&amp; last = last&amp; classname = classname&amp; day = day&amp; times = times&amp; date = date” 一定是 数据:“id = $ id&amp; first = $ first&amp; last = $ last&amp; classname = $ classname&amp; day = $ day&amp; times = $ times&amp; date = $ date”