-2

是否可以使用 $_POST 获取其他属性的值而不是名为 value 的属性

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

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

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

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

另一个例子:如果我使用

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

我可以用 $_POST 而不是 "Fusro" 得到 "Dah" 吗?

4

4 回答 4

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'是您在表单中提交的唯一内容。

于 2012-07-20T12:43:54.060 回答
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-上面的代码将添加以 post开头的所有属性。

上面的结果是:

Dah[_]      FusRo     // default value 
Dah[name]   dhovakin  // data-name
Dah[race]   kajit     // data-race
于 2012-07-20T13:26:47.750 回答
0

$_POST 只为您提供字段的名称及其对应的值,仅此而已。

于 2012-07-20T12:45:09.563 回答
0

不,除了输入字段的“值”之外,您不能发布任何其他内容。你可以通过使用 javascript 来破解它。就像是

document.getElementById('FORM').onsubmit = function() {
document.getElementById('FIELD').value = document.getElementById('FIELD').customAttribute
}

但是,如果禁用了 javascript,您的表单将提交错误的值。不是一个真正可靠的解决方案。

对我来说听起来更像是你将不得不重新定义你的价值观,我真的无法想象你为什么要改变这种行为。

于 2012-07-20T12:47:04.110 回答