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

问题描述:

我有这些代码:为什么这个代码中的变量未定义? - 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'是一个不确定的变量。你能告诉我为什么? 谢谢。

+0

请阅读如何使用[表单以及如何从PHP表单获取数据](http://www.tizag.com/phpT/forms.php)。类似的问题已经被问及时间。它们通常最终会过于本地化,因为手头的真实问题无法通过所提供的文本进行搜索。 – animuson 2012-02-05 00:48:12

$_POST

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

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

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

$test = $_POST['copy_to']; 

因为您的表单中没有名称为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> 
+0

我的不好,但它仍然给我错误。 :( – 2012-02-05 00:42:38

+0

@Renzo Montejo:你刚刚检查了我的更新答案吗? – 2012-02-05 00:46:18

这应该是一个_,而不是-

编辑:天啊,它更糟。它应该是$_POST['a'],因为name-属性。 name-attribute用于指定将GET或POST参数传递给Web应用程序的名称/标识符。 id-属性主要用于在客户端识别HTML元素,例如,当做一些与JavaScript的东西。

+0

我的坏在那里。但仍然,它给了我错误。:( – 2012-02-05 00:41:42

+0

这是一个更正,但它仍然是错误的。是在请求中发送的,而不是'id'。 – mrlee 2012-02-05 00:43:34

需要被$ _POST [“A”]的ID不提交到邮政阵列,它的名称属性

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

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

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

您输入的id属性使用值(和拼写错误不一致),所以它是未定义到PHP 。