将表单发布到数据库而不会以php回显的形式离开页面

时间:2014-08-14 19:41:18

标签: php mysql ajax forms

我想我真的在这里挖了一个洞。我有一个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')只是因为这是我到目前为止唯一的通知类型......

1 个答案:

答案 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

?>

简而言之,这就是我如何设置的。希望有所帮助!