我无法通过HTTP GET查询字符串重复字段查找有关行为的权威信息,例如
http://example.com/page?field=foo&field=bar
Run Code Online (Sandbox Code Playgroud)
特别是如果保留或不保留订单.大多数面向Web的语言产生一个包含与关键"字段"相关联的foo和bar的数组,但我想知道是否存在关于这一点的权威声明(例如在RFC上).RFC 3986有一个部分3.4. Query,它引用了键=值对,但没有说明如何解释顺序和重复字段等.这是有道理的,因为它依赖于后端,而不属于RFC的范围......
虽然存在事实上的标准,但我希望看到它的权威来源,只是出于好奇.
我有一个HTML表单 - 使用PHP,我将表单的数据发送到MySQL数据库.表单上的问题的一些答案有复选框.显然,用户不必勾选一个问题的所有复选框.我还想让其他问题(包括无线电组)可选.
但是,如果我提交带有空框,无线电组等的表单,我会收到一个很长的"未定义索引"错误消息列表.
我怎么能绕过这个?谢谢.
无法让我的POST数组显示我的表单中的所有复选框值.
我有一个表格设置如下:
<form name='foo' method='post' action=''>
<table>
<tr>
<td class='bla'>Checkbox: <input type='checkbox' name='cBox[]'/></td>
</tr>
<tr>
<td class='bla'>Checkbox: <input type='checkbox' name='cBox[]'/></td>
</tr>
<tr>
<td class='bla'>Checkbox: <input type='checkbox' name='cBox[]'/></td>
</tr>
</table>
</form>
Run Code Online (Sandbox Code Playgroud)
我在底部有一个按钮绑定到一个jquery函数,它向表单添加了5个空行(因此输入名称为cBox []的数组).
现在,问题.让我们说第一个复选框未选中,最后两个复选框被选中.当我输出值(使用PHP print_r进行调试)时,我会得到:
Array ( [0] => on [1] => on)
Run Code Online (Sandbox Code Playgroud)
由于某种原因,该数组不包含未选中复选框的任何值.
我已经看到了一些解决方案,其中隐藏变量与每个复选框一起传递,但是这个解决方案可以在我的情况下实现(使用数组)吗?
如果选中复选框数组中的复选框,如何提交值1,如果未选中则提交0?我试过这个,但没有运气.我正在尝试在提交表单时在php数组中获取此数组.请帮忙!
<input id = 'testName0' type = 'checkbox' name = 'check[0]' value = '1' checked>
<input id='testNameHidden0' type='hidden' value='0' name='check[0]'>
<input id = 'testName1' type = 'checkbox' name='check[1]' value = '1' unchekced>
<input id='testNameHidden1' type='hidden' value='0' name='check[1]'>
<input type = 'submit' value = 'Save Changes'>
>
<script>
if(document.getElementById('testName0').checked){
document.getElementById('testNameHidden0').disabled = true;
}
</script>
<script>
if(document.getElementById('testName1').checked){
document.getElementById('testNameHidden1').disabled = true;
}
</script>
Run Code Online (Sandbox Code Playgroud) 如果未选中复选框,则单击表单提交按钮不会提交任何数据.
根据用户选择的表单字段,某些复选框可能不在表单中.因此,提交控制器无法确定表单中是否存在未选中的复选框.
如果此列的数据库包含true,则此属性不会更新为false.复选框名称与数据库布尔列名称相同.
如果复选框未选中但是如果复选框不存在于表单中,则如何强制表单提交处于未选中状态的复选框或任何其他想法将数据库中的值设置为false?
使用jquery,jqueryui,asp.net 2 mvc
当有人选中表示行上位字段的框时,我想更新数据库.我一直在讨论这个问题:带有复选框的Ajax.ActionLink(...) 这是我在cshtml文件中的代码:
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Macro_Name)
</td>
<td>
@Html.CheckBoxFor(modelItem => item.Claimed, new { id = item.Macro_Name, data_url = Url.Action("ToggleClaim", "MacroStatus")})
</td>
<td>
@Html.DisplayFor(modelItem => item.Date_Claimed)
</td>
<td>
@Html.DisplayFor(modelItem => item.Username)
</td>
<td>
@Html.DisplayFor(modelItem => item.Finished)
</td>
<td>
@Html.DisplayFor(modelItem => item.Date_Completed)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.Macro_Name }) |
@Html.ActionLink("Details", "Details", new { id = item.Macro_Name }) |
@Html.ActionLink("Delete", "Delete", new { id = item.Macro_Name })
</td>
</tr>
}
Run Code Online (Sandbox Code Playgroud)
在MacroStatusController类中,我有以下操作:
public ActionResult …Run Code Online (Sandbox Code Playgroud) 我觉得这可能是一个简单的解决办法,但我似乎无法绕过它。我有一个 ASP.NET Core Web 应用程序,我正在使用 ajax 表单将数据提交到我的控制器进行处理。我遇到的问题是我的复选框总是作为“false”传递,即使它们可能被选中。
我搜索了一些答案,但我尝试过的都没有成功。比如使用checked财产,确保名称正确。
任何人都可以阐明为什么当表单提交到控制器时这些值被忽略以及我如何修复它?
形式
<form asp-action="CreateCustomView" asp-controller="Data"
data-ajax="true"
data-ajax-method="POST">
<div class="row">
<div class="col">
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="ColName" name="ColName" checked>
<label class="custom-control-label" for="ColName">Name</label>
</div>
</div>
<button type="reset">Reset</button>
<button type="submit">Save changes</button>
</form>
Run Code Online (Sandbox Code Playgroud)
模型
namespace MyProject.Data
{
public class GridView : BaseEntity
{
public string Name { get; set; }
public bool ColName { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
数据控制器
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using MyProject.Data;
using Microsoft.AspNetCore.Mvc; …Run Code Online (Sandbox Code Playgroud) 我正在构建一个可以添加更多字段组的表单来处理它们我在for循环中读出数组
剧本:
<?php
foreach ($_POST as $key => $value) {
$$key = $value;
}
$count = count($name);
for ($i=0; $i<$count; $i++){
?>
<strong><?php echo $name[$i]; ?></strong> (<?php echo $check[$i]; ?>)<br /><?php echo $select[$i]; ?><br /><br />
<?php
}
?>
<form method="post">
<div class="group">
<input type="text" name="name[]" /><br />
<input type="checkbox" name="check[]" value="true" /><br />
<select name="select[]"><option>1</option><option>2</option><option>3</option></select>
</div>
<div class="group">
<input type="text" name="name[]" /><br />
<input type="checkbox" name="check[]" value="true" /><br />
<select name="select[]"><option>1</option><option>2</option><option>3</option></select>
</div>
<div class="group">
<input type="text" name="name[]" /><br /> …Run Code Online (Sandbox Code Playgroud) 首先,以此页面为例:点击此处
如果您查看"设施"部分,则有3组复选框(单位功能,社区功能和租用的实用程序).
我的问题是:如何使用PHP制作3个数组变量(例如$ unit_features,$ community_features和$ utilities_included)来存储哪些框未被检入表中的3个相应字段?
更重要的是:如何以相同的数组格式从表中提取数据,以便查看/编辑/删除详细信息?
我在我的php文件中使用下面的代码从多个复选框中获取值.
if(!empty($_POST['check_list'])) {
foreach($_POST['check_list'] as $check) {
update_comment_meta($check, 'consider', 1);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是这个代码显然$_POST['check_list']只在数组中放入了检查值.
我需要update_comment_meta通过将'0'作为第三个参数而不是'1'来对未设置的值执行该功能.
有关更多详细信息,我给出了生成HTML表单的代码:
<form action="" id="primaryPostForm" method="POST">
<?php
$defaults = array(
'post_id' => $current_post);
$com= get_comments( $defaults );
foreach ($com as $co) {
if(get_comment_meta($co->comment_ID, 'consider', true)==1) {
?><input type="checkbox" name="check_list[]" value="<?php echo $co->comment_ID; ?>" checked="checked">
<?php }
else {
?><input type="checkbox" name="check_list[]" value="<?php echo $co->comment_ID; ?>" >
<?php
}}
</form>
Run Code Online (Sandbox Code Playgroud)
您的平常帮助总是受到赞赏.
我有一个包含大约80个复选框的表单,默认情况下会检查所有这些复选框.用户只会取消选中不需要的项目,因此我在查找未选中的复选框元素POST.但是,POST仅保留已检查值的值.
经过一番搜索,我找到了适合我情况的解决方法: 这个问题
解决方法:
<form>
<input type='hidden' value='0' name='selfdestruct'>
<input type='checkbox' value='1' name='selfdestruct'>
</form>
Run Code Online (Sandbox Code Playgroud)
使用这个我能够获得隐藏字段的值,因此我的目的得以实现.
但重要的问题是为什么这不是默认功能?我找到了第一次听起来很奇怪的任何技术问题的正当理由.但为此(不能发布未经检查的复选框)我仍然很想知道原因.
如果有人能够阐明这个话题,我将不胜感激.
基本上我可以获得适用于勾选框(= 1)时的值,但我无法让它在未选中时发送默认值 0 。
<input type="checkbox" name="post_friend" value="1">
Run Code Online (Sandbox Code Playgroud)
我四处搜索,有人建议设置一个隐藏的复选框,但这对我不起作用。
<input type="hidden" name="post_friend" value="0">
Run Code Online (Sandbox Code Playgroud)