表单提交空值

Posted

技术标签:

【中文标题】表单提交空值【英文标题】:Form submits null value 【发布时间】:2016-07-24 15:52:38 【问题描述】:

我正在使用 echo 从像这样的另一个页面中获取表单

<div id = "consult-form-wrapper">
   <?php include('consultation.php') ?>
</div>

实际形式

<div id="acordeon">
<div class="panel-group" id="accordion">
  <div class="panel panel-default">
    <div class="panel-heading">
      <h4 class="panel-title">
        <a data-toggle="collapse" href="#collapseThree">
          Consult Form
        </a>
      </h4>
  </div>
        <form name ="consult-form" method="post" id="consult-form">
            <div class = "col-md-8">
                <div id="collapseThree" class="panel-collapse collapse">
                  <div class="panel-body">
                        <h5>Why did you sign up?</h5>
                         <textarea class="form-control" name = "q1" id="q1"></textarea>
                      </div>

                        <h5>What are your goals?</h5>
                         <textarea class="form-control" name = "q2" id="q2"> </textarea>

                    <div class="footer text-center">
                        <button type="submit" class="btn btn-fill btn-success" onClick="submitconsult()"
                            >Submit</button>
                         <button id="reset" class="btn btn-fill btn-danger" type="reset">Reset</button>
                    </div>
                </div>

            </div>
        </form>
  </div>
</div>
</div>

sql代码

$comment = $_POST['q1'];
$id2=$_SESSION['new_id'];
$id4 = '1026';

try 
        $pbr = $conn->prepare("UPDATE `memberInfo` mi
                       INNER JOIN `loginInfo` AS li
                       ON li.userID = mi.UserID
                       SET `q1` = ?
                       WHERE mi.userID = ?");
        //mysqli_real_escape_string($conn, $q1);
        $pbr->bind_param("ss", $comment, $id2);
        $pbr->execute();

javascript代码

function submitconsult() 
    var data = $('#consult-form').serialize();
    $.ajax(
        type: "POST",
        url: "postconsult.php",
        data: data,
        cache: false,
        success: function(html) 
        //alert(html);
        //document.getElementById('regform').reset();
        
        );

如果我直接导​​航到consultation.php,它会很好地发布,但如果我尝试从页面上执行它,我会从它中回显它,它只会提交为空。我认为它可能没有获取会话 ID ($id2),所以我对 ID ($id4) 进行了硬编码,但仍然是同样的问题。

【问题讨论】:

【参考方案1】:

您已经使用提交按钮提交了一次表单

<button type="submit" class="btn btn-fill btn-success" onClick="submitconsult()">Submit</button>

然后再次通过 submitconsult() 函数。您需要更改功能以防止第一次提交,以便您可以执行 Ajax:

function submitconsult(evt) 
  evt.preventDefault();....

或者干脆把按钮的提交类型去掉,把按钮移出表单,然后调用Ajax函数,不会自动触发表单提交。

【讨论】:

提交监听器应该在表单上,​​而不是提交按钮上。无需点击提交按钮即可提交表单。 我加了一行和参数,还是不行。 将监听器更改为:onclick="submitconsult(event)"。内联监听器不会像使用 addEventListener 附加的那样传递 event 对象。更简单的将听众放在表单上:onsubmit="submitconsult();return false" 并用一块石头杀死两只鸟。 我刚刚修改了我的帖子 - 另一种方法是“..从按钮中删除提交类型并将按钮移出表单,然后将 Ajax 函数作为 te onclick 事件调用而无需自动触发表单提交。”

以上是关于表单提交空值的主要内容,如果未能解决你的问题,请参考以下文章

提交表单时在控制器中获取空值

如何在 Laravel 中提交具有空白或空值和非空白值的表单

Spring mvc 表单提交问题!!关于date类型!!

一个表单提交的时候需要注意什么

尽管在空白字段上处理了错误,但表单正在提交

如何在layui中使用表单