我想我真的在这里挖了一个洞。我有一个php文件创建一个带有复选框的“通知列表”。我希望它以某种方式工作,以便用户检查他读取的通知(为了清理他/她的列表),然后表单将通过检查提交,并且数据库中的“通知”表将被更新。我的问题:它有效,但它提交到notification.php文件。我不希望这样。 我阅读了几种用AJAX解决它的方法,但它们需要复选框id,如下所示,id是由php创建的......
echo "<form name='noteform' id='noteform' action='notifications.php' method='POST'>";
echo "<ul>";
while($row = mysqli_fetch_array($result)) {
if ($row['type'] == 'group_request') {
echo "<li><input type='checkbox' name='check[]' value='" . $row['id'] . "' onclick='document.noteform.submit()' /><p1>" . $row['text'] . " | Approve? </li>";
}else{
echo "<li><input type='checkbox' name='check[]' value='" . $row['id'] . "' /><p1>" . $row['text'] . "</p1></li>";
}
}
echo "</ul>";
echo "</form>";
$check = isset($_POST['check']) ? $_POST['check'] : array();
foreach($check as $ch) {
$result = mysqli_query($conn, "UPDATE notifications SET `read`=1 WHERE id='$ch'");
}
?>
PS。 if($row['type'] == 'group_request')
只是因为这是我到目前为止唯一的通知类型......
答案 0 :(得分:0)
你不能以任何方式 ,但它会让你的生活变得更加轻松IMO。这是使用jQuery的快速解决方案:
$('#noteform').on('submit', function(event){
// Validate or whatever
// Submit
$.ajax({
'type': 'post',
'data': $(this).serialize(),
'url': 'path-to-notification.php',
'timeout': 50000
}).done(function(response) {
// success
}).fail(function(error) {
// error
});
event.preventDefault();
});
修改强> 我们假设你有&#34; index.php&#34;,并且在该文件中你有表格:
<强>的index.php 强>
<?php
....
<form>
....
</form>
....
?>
然后在in和外部.js文件中,或在<script>
标记内的index.php中,你将拥有上面的ajax方法。
接下来,您将拥有notification.php
来处理您的表单操作。
<强> notifications.php 强>
if(isset($_POST['check'])
{
// check the value
// handle the form element
}
// sanitize the data
// run your update query
// return success/fail to the javascript
?>
简而言之,这就是我如何设置的。希望有所帮助!