【问题标题】:PHP form stay on same pagePHP表单保持在同一页面上
【发布时间】:2016-03-11 11:40:39
【问题描述】:

您好,我正在尝试从与 php 代码相同页面上的表单更新数据库中的数据,而无需重定向/重新加载页面。

我试过这个教程,但没有用:http://www.formget.com/form-submit-without-page-refreshing-jquery-php/

更新代码:

<?php
include "db.php";
session_start();
$value=$_POST['name'];
$query = mysqli_query($connection,"UPDATE users SET profiel='$value' WHERE username='$_SESSION['user']'");
?>

Profilecomplete.js:

$(document).ready(function() {
    $("#submit").click(function() {
        var name = $("#name").val();
        if (name == '') {
            alert("Insertion Failed Some Fields are Blank....!!");
        } else {
        // Returns successful data submission message when the entered information is stored in database.
            $.post("config/profilecomplete.php", {
                value: name
            }, function(data) {
                alert(data);
                $('#form')[0].reset(); // To reset form fields
            });
        }
    });
});

形式:

<form method="POST" id="form">
    <div class="input-field col s6">
        <input id="name" type="text" class="validate">
        <label for="name">Value</label>
    </div>
    <button type="submit" id="submit" class="btn-flat">Update</button>
</form>

【问题讨论】:

  • 你有这方面的例子/教程吗?
  • 你能用你正在使用的更多代码来编辑你的问题吗?我还没有阅读该教程,但我认为使用了某种形式的 jQuery ajax,而且我敢肯定,我不是唯一一个想按照整个教程来回答您的问题的人。
  • 谢谢。进一步的问题,您是否在控制台中收到任何错误或页面上可能出现 PHP 错误?
  • 发帖前我没有第一件事检查;)
  • 您正在寻找的是SPA en.wikipedia.org/wiki/Single-page_application 或至少它的组成部分。

标签: javascript php jquery html ajax


【解决方案1】:

使用这个,它已经在工作了。

index.php

<form method="post">
    <input type="text" id="name">
    <input type="submit" id="submit">
</form>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script> 
$(document).ready(function() {
    $("#submit").click(function(e) {
        e.preventDefault();
        var nameInput = $("#name").val();
        var name = {
            'name' : nameInput
        }
        if (nameInput == '') {
            alert("Insertion Failed Some Fields are Blank....!!");
        } else {
            // Returns successful data submission message when the entered information is stored in database.
            $.post("config/profilecomplete.php", {value: name}, function(data) {
                alert(data);
                //$('#form')[0].reset(); // To reset form fields
            });
        }
    });
});
</script>

profilecomplete.php

<?php

$_POST = array_shift($_POST); // array_shift is very important, it lets you use the posted data.

echo $_POST['name'];


?>

如果你想要更简单的方法。

尝试使用$.ajax()

【讨论】:

  • 你将如何从中获得 $_POST['name']?
  • 'name' : nameInput // this name here
  • 这可行,但它会弹出一个错误消息。有任何解决这个问题的方法吗? i.imgur.com/PFPpLTz.png 第 27 行:$value=$_POST['name'];
  • 或像这样'name' : $("#name").val(), 'pass': $("#pass").val() 小心逗号分隔符。术语是key value pairs。那是一个对象。
  • 我遇到的其他问题是,例如,如果我发布 2 个不同的东西,他们都会发布来自输入 1 的数据
【解决方案2】:

看起来问题,或者至少是其中一个问题,在这条线上;

$query = mysqli_query($connection,"UPDATE users SET profiel='$value' WHERE username='$_SESSION['user']'");

您在这里打开和关闭单引号两次

WHERE username='$_SESSION['user']'

尝试改用这个;

$query = mysqli_query($connection,"UPDATE users SET profiel='$value' WHERE username='" . $_SESSION["user"] . "'");

【讨论】:

    【解决方案3】:

    即使您没有阻止表单提交按钮的默认行为,您的点击事件如何发生。将提交输入设为按钮或使用event.preventDefault() 通过ajax 提交表单。

    <?php
    include "db.php";
    session_start();
    
    if(isset($_POST)) {
        $value=$_POST['name'];
        $query = mysqli_query($connection,"UPDATE users SET profiel='$value' WHERE username='{$_SESSION['user']}'");
        echo ($query) ? "Updated" : "Not Updated";
        exit;
    } else {
    ?>
    <form method="POST" id="form">
        <div class="input-field col s6">
            <input id="name" type="text" class="validate" name="name">
            <label for="name">Value</label>
        </div>
        <button type="button" id="submit" class="btn-flat">Update</button>
    </form>
    <?php } ?>
    
    <script type="text/javascript">
    $(document).ready(function() {
        $("#submit").click(function() {
            var name = $("#name").val();
            if (name === '') {
                alert("Insertion Failed Some Fields are Blank....!!");
            } else {
                // Returns successful data submission message when the entered information is stored in database.
                $.post("config/profilecomplete.php", {name: name}, function(data) {
                    alert(data);
                    $('form')[0].reset(); // To reset form fields
                });
            }
        });
    });
    </script>
    

    【讨论】:

    • 这给了我Notice: Undefined index: name in,只显示Updated
    • 更新了我的答案。将 {value:name} 更改为 {name:name}
    猜你喜欢
    • 2011-12-29
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多