是否可以使用$_POST 获取除属性命名值之外的其他属性值
example: <option value="FusRo" name="Dah"></option>
通常,当我使用$_POST['Dah']时,php会抓取FusRo(值)。
但我想获取另一个属性的值,而不是属性命名值。我希望你能理解。
如果我不能使用$_POST来获取其他值,它是我可以使用的其他命令吗?
另一个例子:如果我使用
<option value="FusRo" name="Dah"></option>
我可以用$_POST而不是"Fusiro"获得"Dah"吗?
您可以将其他值放入隐藏字段:
<input type="hidden" name="DahHidden" value="somethingelse" />
然后用从$_POST
获取
$_POST['DahHidden']
如果这个值必须根据<select>
中的内容动态更改,那么您将需要JavaScript。
如果您想从$_POST
中获取密钥(即表单字段中的name
属性),您可以这样迭代$_POST
:
foreach( $_POST as $key => $value)
echo $key . ' => ' . $value; // Will print Dah => value (eventually)
请注意,在$_POST
上迭代可能会产生比一个表单元素更多的输出(除非'Dah'
是您在表单中提交的唯一内容。
唯一的方法是使用JavaScript修改发布的数据,或者更简单地使用jQuery
然后它看起来像这样:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/jquery-ui.js"></script>
</head>
<body>
<form name="skyrim" id="skyrim">
<input type="text" value="FusRo" name="Dah" data-name="dhovakin" data-race="kajit" />
<form>
<script>
$('#skyrim').submit(function( e ){
data = {};
url = 'http://sandbox.local/testpost.php';
e.preventDefault();
$('input, textarea', this).each(function(){
var pcs = $( this ).data();
var ename = $( this ).attr('name');
if(undefined == data[ ename ] ){
data[ ename ] = {};
data[ ename ]['_'] = $(this).val();
}
$.each(pcs, function(k, v){
data[ ename ][k] = v;
});
});
$.ajax({
url : url
,data : data
,type : "POST"
}).done(function(){
});
});
</script>
</body>
</html>
以上代码将把以data-
开头的所有属性添加到帖子中。
上面的结果是:
Dah[_] FusRo // default value
Dah[name] dhovakin // data-name
Dah[race] kajit // data-race
$_POST只提供字段的名称及其相应的值,仅此而已。
否,除了inputfield的"value"之外,您不能发布任何其他内容。你可以使用javascript破解它。类似的东西
document.getElementById('FORM').onsubmit = function() {
document.getElementById('FIELD').value = document.getElementById('FIELD').customAttribute
}
但是,如果禁用了javascript,则表单将提交错误的值。不是一个真正可靠的解决方案。
在我看来,你必须重新定义你的价值观,我真的无法想象你为什么要改变这种行为。