他の人が述べたように、PHP を HTML に直接含めることはできないため、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 など) を動的コードからできるだけ分離することは良いことです。大きな利点の 1 つは、引用符のエスケープについて心配する必要がないことですが、欠点はかなりの数の<?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 は「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
}
});
}