我有一个显示学生成绩的PHP页面,并且可以选择单独更新每行的结果而无需刷新页面。
但是我希望页面上的其余数据得到更新以反映此更改(表底部的总百分比)
我最初创建了AJAX脚本,该脚本提交并更新了一个Div(用于测试以确认其正常工作,以后将其删除),然后我决定要更新页面的其余部分,并在其他地方找到了一个函数这样做吧...
两个函数都可以很好地工作,但是当彼此协同工作时,如果不重新加载整个页面就无法提交数据,我认为这可能是因为我通过包含文件调用了表单,但是当我禁用了refreshtable( ),它仍然可以正常工作。
由于我的JQUERY知识非常有限,我只是在控制台中对其进行了检查,并且没有收到任何错误。
member_data.php中包含的JQUERY:
<script type="text/javascript">
$(document).ready(function() {
refreshTable();
$('.update-results-form').on('submit', function(e) {
e.preventDefault();
$.ajax({
type: $(this).attr('method'),
url: $(this).attr('action'),
data: $(this).serialize(),
success: function(data) {
// $('#ajax-response').html(data);
refreshTable();
}
});
});
function refreshTable(){
$('#table-holder').load('member_data_table.php', function(){
setTimeout(refreshTable, 5000);
});
}
});
</script>
主页面member_data.php:
<?php
$_SESSION['member'] = $_GET['member'];
$matref = $_SESSION['member'];
$_SESSION['grade'] = $_GET['grade'];
$currentGradeID = $_SESSION['grade'];
include 'DBConnect.php';
$gradesresult = $conn->query("SELECT GradeID, beltcolour, style FROM grades");
?>
Change Grade:
<form action="member_data.php" method="GET"><input type="hidden" name="member" value="<?php echo $matref; ?>" />
<select name="grade">
<option selected> </option>
<?php
if ($gradesresult->num_rows > 0) {
// output data of each row
while($row = $gradesresult->fetch_assoc()) {
echo '<option value="' . $row["GradeID"] .'">' . $row["beltcolour"].
'</option>';
}
} else {
echo "No Grades Found";
}
?>
</select>
<input type="submit" value="Change Grade" />
</form>
Name
<div id="ajax-response"></div>
<div id='table-holder' >
<?php
include 'member_data_table.php';
?>
</div>
已包含PHP页面(member_data_table.php):
<table style="width: 50%;" border = "1" cellpadding = "1">
<tbody>
<tr>
<td><b>Criteria</b> </td>
<td><b>Current Result </b></td>
<td><b>Update Result </b></td>
</tr>
<?php
include 'DBConnect.php';
$result = $conn->query(" QUERY ");
/* $result = $conn->query(" QUERY "); */
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
?>
<tr>
<td><?php echo $row['criteria']; ?> </td>
<td><?php echo $row['result']; ?> (<?php echo $row['updated']; ?>)</td>
<td>
<div id="result-update"> <form action="/update_result.php" method="post" class="update-results-form">
<input type="hidden" name="member" value="<?php echo $matref; ?>" >
<input type="hidden" name="grade" value="<?php echo $currentGradeID; ?>">
<input type="hidden" name="criteria" value="<?php echo $row['CriteriaID']; ?>">
<select name="result" class="dropdown">
<option selected=""></option>
<?php $resultdropdown = $conn->query("SELECT ResultID, result FROM results");
if ($resultdropdown->num_rows > 0) {
// output data of each row
while($row2 = $resultdropdown->fetch_assoc()) {
e cho '<option value="' . $row2["ResultID"] .'">' . $row2["result"]. '</option>';
}
} else {
echo "No Results Found";
}
?>
</select><input type="submit" value="update" />
</form> </div>
</td>
</tr>
<?php
}
} else {
echo '<tr> <td colspan="3"> No Data Found </td> </tr>';
}
?>
</tbody>
</table>