$ _POST另一个属性而不是值

时间:2012-07-20 12:41:42

标签: php post

是否可以使用$ _POST

获取某些其他属性的值而不是属性命名值
example: <option value="FusRo" name="Dah"></option>

通常当我使用$ _POST ['Dah']时,php会抓取FusRo(值)。

但我想获取另一个属性的值而不是属性命名值。我希望你明白。

如果我不能使用$ _POST来获取其他值,那么我可以使用其他一些命令吗?

另一个例子: 如果我使用

<option value="FusRo" name="Dah"></option>

我可以使用$ _POST代替“Fusro”获得“Dah”吗?

4 个答案:

答案 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,您的表单将提交错误的值。不是一个真正可靠的解决方案。

听起来更像是你必须重新定义你的价值观,我无法想象你为什么要改变这种行为。