私はいくつかの Web サイトで自分の問題について検索しましたが、見つけることができませんでした。私が探しているのは、行の削除の成功メッセージで応答が戻った後にページを更新する方法です。マイページ admin2.php には、DB からの管理者の情報と、学生の各行の横にチェックボックスがある学生のテーブル (DB から) が表示されます。Ajax経由でフォーム(テーブル)を送信して(admin3Response.php)ページに移動して確認し、応答を返します。ここに問題がある私のコードがあります。
admin2.php
<tr><th>Admin Information</th>
<th style="width: 212px"></th></tr>
<tr><td><b>Admin Name: <?php echo $name; ?></b><span name="adminName"></span></td>
<td style="width: 212px"><b>Admin ID: <?php echo $userID; ?></b><span name="adminID"></span></td></tr>
<tr><td><b>Phone: <?php echo $phone; ?></b><span name="adminPhone"></span></td>
<td style="width: 212px"><span></span></td></tr>
admin2.php リフレッシュしたいフォームです。このテーブルから、削除する生徒を選択できます。
else if(isset($dropStudent))
{
if(mysql_num_rows($QueryResult7) == 0)
{
?>
<h2><?php echo ("There are no students available.");?></h2>
<p>
<div class="form_settings">
<input class="submit" type="button" onclick="goBack()" name="delete0" value="Back" style="margin-left: 0px; width: 89px">
</div>
<?php
}
else
{
?>
<form name="form3" id ="form3" method="" action="admin2.php" >
<input type="hidden" value="Delete" name="deleteStudent">
<?php
echo $adminUser;
?>
<TABLE style="width:100%; border-spacing:1;">
<TR><TH>Choose</TH><TH>USER_ID</TH><TH>STUDENT NAME</TH><TH>EMAIL</TH><TH>PHONE</TH> <TH>MAJOR</TH><TH>GPA</TH><TH>DEGREE</TH></TR>
<?php
$Row7 = mysql_fetch_row($QueryResult7);
// reads row of query into indexed array
// advances result pointer
do
{
echo '<TR><TD><input type="checkbox" name="checkbox[]" value="' . $Row7[0] . '"></TD>' .
"<TD>{$Row7[0]}</TD>
<TD>{$Row7[1]}</TD>" .
"<TD>{$Row7[2]}</TD>
<TD>{$Row7[3]}</TD>" .
"<TD>{$Row7[4]}</TD>
<TD>{$Row7[5]}</TD>" .
"<TD>{$Row7[6]}</TD>
</TR>";
$Row7 = mysql_fetch_row($QueryResult7);
} while ($Row7); // tests for content of null
?>
<input type="hidden" value="<?php echo $countStds; ?>" name="countStds">
<input type="hidden" value="<?php echo $adminUser; ?>" name="adminUser">
<tr>
<td colspan="10">
</tr>
<?php
mysql_close($DBConnect);
?>
</TABLE>
</form>
<script>
// $("#form3") grabs the above form with an ID of "form3"
$("#form3").on('submit', function(){
// Grab all form values
var values = $("#form3").serialize();
// Send form values over ajax
$.ajax({
method: 'POST',
url: 'admin3Response.php',
data: values,
// execute when response comes back from admin3Response.php
success: function(data){
// data = whatever admin3Response echo'd back
// check for success
if (data.lastIndexOf("success") >= 0) {
// no errors
alert("Student was dropped successfully");
window.location.reload(true); // It reload an empty page; didn't work
//alert("TODO: redirect user somewhere?");
} else {
// Display error message
alert(data);
}
}
})
return false;
});
</script>
<?php
}
}
admin3Response.php
else if(isset($deleteStudent))
{
if (isset($checkbox))
{
for($i=0; $i<$countStds; $i++)
{
$delStudent = $checkbox[$i];
$wholeStudents = mysql_query("DELETE USERS, ENROLLMENTS, OVERIDES FROM USERS, ENROLLMENTS, OVERIDES WHERE USERS.USER_ID = ENROLLMENTS.USER_ID AND ENROLLMENTS.USER_ID = OVERIDES.USER_ID AND USERS.USER_ID = '$delStudent'");
$delUserStudent = mysql_query("DELETE USERS FROM USERS WHERE USER_ID = '$delStudent'");
$delOverStudent = mysql_query("DELETE OVERIDES, USERS FROM OVERIDES, USERS WHERE USERS.USER_ID = OVERIDES.USER_ID AND USERS.USER_ID = '$delStudent'");
$delEnrStudent = mysql_query("DELETE ENROLLMENTS, USERS FROM ENROLLMENTS, USERS WHERE USERS.USER_ID = ENROLLMENTS.USER_ID AND USERS.USER_ID = '$delStudent'");
}
echo ("You have deleted "); echo count($checkbox); echo (" student(s) `enter code here`successfully.");
echo ("success");
}
else
{
echo ("No student selected");
}
mysql_close($DBConnect);
}
「window.location.reload(true);」を使用してみましたが、空のページがリロードされます。私の推測では、get メソッドを使用して admin3Response.php から admin2.php にすべての変数を渡す必要がありますが、その方法がわかりません。どんな助けでもいただければ幸いです。