是否可以使用$ _POST
获取某些其他属性的值而不是属性命名值example: <option value="FusRo" name="Dah"></option>
通常当我使用$ _POST ['Dah']时,php会抓取FusRo(值)。
但我想获取另一个属性的值而不是属性命名值。我希望你明白。
如果我不能使用$ _POST来获取其他值,那么我可以使用其他一些命令吗?
另一个例子: 如果我使用
<option value="FusRo" name="Dah"></option>
我可以使用$ _POST代替“Fusro”获得“Dah”吗?
答案 0 :(得分:5)
您可以将其他值放在隐藏字段中:
<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'
是您在表单中提交的唯一内容。
答案 1 :(得分:1)
唯一的方法是使用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
答案 2 :(得分:0)
$ _ POST仅为您提供字段的名称及其对应的值,仅此而已。
答案 3 :(得分:0)
不,您不能发布任何其他内容,而不是输入字段的“值”。 你可以使用javascript破解你的方式。像
这样的东西document.getElementById('FORM').onsubmit = function() {
document.getElementById('FIELD').value = document.getElementById('FIELD').customAttribute
}
但是,如果禁用了javascript,您的表单将提交错误的值。不是一个真正可靠的解决方案。
听起来更像是你必须重新定义你的价值观,我无法想象你为什么要改变这种行为。