表单提交空值
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();
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 事件调用而无需自动触发表单提交。”以上是关于表单提交空值的主要内容,如果未能解决你的问题,请参考以下文章