发布仅包含某些字段的表单

时间:2020-09-09 11:08:26

标签: php jquery forms post

在我的HTML / PHP应用程序中,我有一个简单的表单:

<form method="post">
    <input type="text" id="vehicle1" name="vehicle1" value="Bike">
    <input type="text" id="vehicle2" name="vehicle2" value="Car">
    <input type="text" id="vehicle3" name="vehicle3" value="Boat">

    <button type="submit" name="submitform" class="btn btn-success" value="save">Save</button>
</form>

然后,在页面的另一部分,我有一个标准按钮:

<button type="button" class="btn btn-primary">Update</button>

当用户按下此按钮时,所需的行为是模仿使用“提交”按钮发布表单的相同行为,但是:

  1. 仅包括特定字段(例如vehicle2
  2. 为他们设置一个给定的值

示例,为简单起见,我使用一个字段:

function updateForm(id, value)
{
    $.ajax({
        url: "samepage.php",
        type: 'POST',
        dataType: "json",
        data: JSON.stringify({submitform: "save", id: value}),
        cache: false,
        contentType: "application/json",
        success: function (result) {
        },
        error: function (request, status, error) {
            console.error(request, status, error);
        }
    });     
}

所以我可以这样称呼它:

updateForm("vehicle2", "Plane");

这是我的页面的PHP代码:

<?php
if (isset($_POST['submitform'])) {
    switch ($_POST["submitform"]) {
        case "save":
            foreach ($_POST as $key => $value) {
                if ($key == 'submitform') continue;
                $sql_update = 'UPDATE settings SET value="' . $value . '" WHERE id=' . $key;
                $db->exec($sql_update);
            }
            break;
    }
}
?>

HTML follows...

但是它返回有关json内容的错误:

parsererror语法错误:JSON.parse:JSON数据第3行第1列的意外字符

我的方法不对吗?

1 个答案:

答案 0 :(得分:1)

这是您发送的正确代码(主要是ajax请求):

<?php
if (isset($_POST['submitform'])) {
    switch ($_POST["submitform"]) {
        case "save":
            foreach ($_POST as $key => $value) {
                if ($key == 'submitform') continue;
                $sql_update = 'UPDATE settings SET value="' . $value . '" WHERE id=' . $key;
                $db->exec($sql_update);
            }
            break;
    }
}
?>
<script>
function updateForm(id, value)
{
    $.ajax({
        url: "samepage.php",
        type: 'POST',
        data: {submitform: "save", id: value},
        success: function (result) {
            // reload the page ?
            //location.reload();
        },
        error: function (request, status, error) {
            console.error(request, status, error);
        }
    });
}
</script>
<form method="post">
    <input type="text" id="vehicle1" name="vehicle1" value="Bike">
    <input type="text" id="vehicle2" name="vehicle2" value="Car">
    <input type="text" id="vehicle3" name="vehicle3" value="Boat">
    <button type="submit" name="submitform" class="btn btn-success" value="save">Save</button>
</form>
<button onclick="updateForm('vehicle2', 'Plane');" type="button" class="btn btn-primary">Update</button>

编辑:

或者您可以简单地添加一个表单:

<form method="post">
    <input type="hidden" name="vehicle2" value="Plane">
    <button type="submit" name="submitform" class="btn btn-success" value="save">Update</button>
</form>