$_POST是值以外的另一个属性


$_POST another attribute than value

是否可以使用$_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,则表单将提交错误的值。不是一个真正可靠的解决方案。

在我看来,你必须重新定义你的价值观,我真的无法想象你为什么要改变这种行为。