【问题标题】:Submit checkbox value on form without page refresh AJAX PHP在表单上提交复选框值而不刷新页面 AJAX PHP
【发布时间】:2020-11-02 19:36:44
【问题描述】:

我刚开始学习 ajax,我同意它真的很棒而且节省时间。

但我在不重新加载页面的情况下发送表单数据时卡住了。

下面是我的html代码。

<form id="form4" method="post">
  <input type="checkbox" name="test" id="agreed" value="check">
  <br>
  <br>
  <input type="submit" id="form-submit" name="submit" value="Send">
  <p class="form-message"></p>
</form>

下面是我的 Ajax 脚本

<script>
    $(document).ready(function() {
        $("#form4").submit(function(event) {
            event.preventDefault();
            var action = 'another_test';
            var agreed = $("#agreed").val();
            var submit = $("#form-submit").val();
            $(".form-message").load("test3.php", {
                test: agreed,
                submit: submit,
                action: action
            });
        });
    });
</script>

下面是我的php代码

<?php

  if (isset($_POST['action'])) {

        if ($_POST['action'] == 'another_test') {

            $test = $_POST["test"];
            $errorEmpty = false;


            if (!empty($test)) {
                echo "<p>Click the checkbox pls</p>";
                $errorEmpty = true;
            }

            else {
                echo "<p>Checkbox clicked</p>";
            }
        } else {
            echo "Error.. cant submit";
        }
    }

?>
<script>

    var errorEmpty = "<?php echo $errorEmpty ?>";
</script>

php 文件位于另一个名为 test3.php 的页面上

如果它是输入文本,则此特定代码有效,但不适用于复选框。 请帮助我,这样我才能学得好。 提前致谢。

【问题讨论】:

  • .load() (根据documentation 执行 GET 请求,而不是 POST。要提交数据,您最好使用 $.post()
  • php 文件在另一个页面上
  • 这与我的观点无关。您的 PHP 脚本需要一个 POST,而您正在向它发送一个 GET。这是否与加载到浏览器中的脚本不同,这对这一事实没有影响。 api.jquery.com/jquery.post 是你需要使用的。
  • 好的会检查一下谢谢
  • 下面我给你举个例子,你看看

标签: javascript php jquery ajax


【解决方案1】:

.load()(根据文档)执行 GET 请求,而不是 POST,但您的 PHP(如 $_POST 引用所示)期待 POST 请求 - 通常使用提交表单数据是有意义的发布。

所以你最好使用$.post() - 这将发送一个 POST 请求。然后您可以处理响应并将其加载到由该请求触发的“完成”回调中的“表单消息”元素中。

注意您还可以通过将“action”变量作为隐藏字段放在表单中来缩短代码,然后在一个命令中简单地序列化表单,而不是单独提取每个值。

例子:

HTML:

<form id="form4" method="post">
  <input type="checkbox" name="test" id="agreed" value="check">
  <br>
  <br>
  <input type="submit" id="form-submit" name="submit" value="Send">
  <input type="hidden" action="another_test"/>
  <p class="form-message"></p>
</form>

JavaScript

$(document).ready(function() {
    $("#form4").submit(function(event) {
        event.preventDefault();

        $.post(
          "test3.php", 
          $(this).serialize()
        ).done(function(data) { 
            $(".form-message").html(data);
        });
    });
});

文档:

jQuery Load

jQuery Post

jQuery Serialize

【讨论】:

  • 谢谢。从你那里学到了很多东西。
  • 没问题。如果答案有帮助,请记住将其标记为“已接受”和/或留下赞成票 - 谢谢 :-)
猜你喜欢
  • 2017-04-09
  • 2013-07-10
  • 2014-03-03
  • 2017-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-26
  • 1970-01-01
相关资源
最近更新 更多