为什么此代码中的变量未定义? - PHP

时间:2012-02-05 00:37:22

标签: php

我有这些代码:

testing.php

<html>
<head>
<script type="text/javascript">
        function copy_data(id){
            var a = document.getElementById(id).value;
            document.getElementById("copy_to").value=a;
        }
    </script>
</head>
<body>
<form action="testprocess.php" method="post">
<input type="text" name ="a" id="copy_from" onkeyup="copy_data('copy_from')"/>
<input type="text" value=0 name ="b" id="copy_to"/>
<input type="submit">
</form>
</body>
</html>

testprocess.php

<?php

    $test = $_POST['copy_to'];

    echo $test;
?>

我收到一条错误消息,指出'copy-to'是一个未定义的变量。你能告诉我为什么吗? 谢谢。

5 个答案:

答案 0 :(得分:4)

$_POST值通过元素的name属性而不是ID传递。试试这个:

<input type="text" value=0 name="copy_to" id="copy_to"/>

并确保在PHP变量中使用下划线:

$test = $_POST['copy_to'];

答案 1 :(得分:2)

需要$ _POST [&#39; a&#39;] ID未提交到帖子数组中,它是名称属性

答案 2 :(得分:0)

因为您的表单中没有名称为copy_to的元素。

尝试以下:

<form action="testprocess.php" method="post">
<input type="text" name ="a" id="copy_from" onkeyup="copy_data('copy_from')"/>
<input type="text" value=0 name ="copy_to" id="copy_to"/>
<input type="submit">
</form>

答案 3 :(得分:0)

$_POST将根据表单元素的name属性包含表单字段的值。

<input type="text" name="copy_from"/>将成为$_POST['copy_from']

<input type="text" name="copy_to"/>将成为$_POST['copy_to']

您正在使用输入的id属性中的值(并且拼写不一致),因此PHP未定义。

答案 4 :(得分:-1)

它应该是_而不是-

编辑:天哪,情况更糟。由于$_POST['a'] - 属性,它应该是name。 name-attribute用于指定将GET或POST参数传递给Web应用程序的名称/标识符。 id属性主要用于标识客户端的HTML元素,例如用javascript做一些事情。