javascript - AJAX POST 不发送所有数据
问题描述
我在一个表单中有以下 HTML 代码,第一个(策略)在 post 中发送,但第二个没有(mfa)。我不知道为什么会这样,有什么想法吗?
<label class="switch switch-flat">
<input class="switch-input" type="checkbox" id="policy" method="post" name="policy" <?php if($row['policy'] === '1') echo 'checked="checked"';?> />
<span class="switch-label" data-on="Yes" data-off="No"></span>
<span class="switch-handle"></span>
</label>
<label for="policy">Does the vendor organization have a written Information Security policy?</label>
</td>
</tr>
<tr>
<td>
<div class="col-md-12">
<label class="switch switch-flat">
<input class="switch-input" type="checkbox" name="mfa" id="mfa" method="post" <?php if($row['mfa'] === '1') echo 'checked="checked"';?> />
<span class="switch-label" data-on="Yes" data-off="No"></span>
<span class="switch-handle"></span>
</label>
<label for="mfa">Do they support and utilize multi-factor authentication?</label>
</td>
这是我发送帖子数据的ajax。当我在开发工具中浏览要发送的标头时,我看到许多其他 HTML 名称都在发送,但大多数列为切换复选框的名称都没有发送,除了最上面的一个“策略”。
<script type='text/javascript'>
/* attach a submit handler to the form */
$('#update').submit(function(e){
e.preventDefault();
$.ajax({
url:'updateVendor.php',
type:'post',
data:$('#update').serialize(),
success:function(){
//whatever you wanna do after the form is successfully submitted
}
});
});
</script>
解决方案
复选框仅在选中时才被认为具有值。否则,它不会包含在提交的表单数据中。
来自MDN 网站:
注意:如果一个checkbox在提交表单的时候是unchecked,那么就没有提交给服务器的值来表示它的unchecked状态(例如value=unchecked);该值根本不提交给服务器。如果您想在未选中时为复选框提交默认值,您可以
<input type="hidden">
在表单中包含一个相同的name
和value
,可能由 JavaScript 生成。
规避此限制的一个技巧是包含具有默认值的隐藏输入。例如
<input name="mfa" type="hidden" value="0">
<input name="mfa" type="checkbox" value="1">
使用这种方法,值 formfa
将始终与表单数据一起提交。
推荐阅读
- rpmbuild - 将 RPM 规范文件添加到现有源代码存储库的正确方法
- wordpress - Wordpress - 如何将高级 TinyMCE 所见即所得编辑器添加到自定义页面中的文本区域框,而不是元框
- excel - 在个人工作簿中使用宏引用非活动工作簿
- devexpress - DevExpress GridView - 单元格/列的自定义过滤器功能
- reactjs - <= 表达式是什么意思?
- python - 为什么 Visual Studio Code 不突出显示我的对象的方法?
- docker - 无法在docker中建立redis和app之间的通信
- angular - 如何按类别过滤 API 调用中的数据并在 UI 中显示?
- express - 我需要带有 Passport.js 的 JWT 吗?
- flyway - 无法让 flyway-docker 识别卷中的本地文件