如何使用POST或GET从PHP生成的HTML输入中获取价值

时间:2017-02-17 23:38:39

标签: javascript php html5

我正在使用javascript制作输入网格。这些输入中的每一个都具有唯一的名称和ID:" test1"," test2" ...我还可以根据其名称更改这些输入的样式。

var c = document.getElementById("gridOne");

function createTable() {
var table = document.createElement('table');
var rows = +document.getElementById('numRows').value;
var cols = +document.getElementById('numCols').value;
    var n = 0;
for(var r=0; r<rows; r++) {
  var tr = document.createElement('tr');
  table.appendChild(tr);
  for(var c=0; c<cols; c++) {
    if(r == 0 || c == 0 || r == rows - 1 ||c == cols - 1 ){ 
        var td = document.createElement('td');
        tr.appendChild(td);
        var inp = document.createElement('input');
        inp.setAttribute('id', 'test'+n);
        inp.setAttribute('name', 'test'+n);
        inp.setAttribute('value', n);
        inp.setAttribute('type','number');
        td.appendChild(inp);
        n++;


    } else {
        var tq = document.createElement('td');
        tr.appendChild(tq);
        tq.classList.add('inner');
        var inp = document.createElement('input');
        inp.setAttribute('type','text');
        inp.disabled = true;
        tq.appendChild(inp);
    }
  }

}
var container = document.getElementById('input_container');
container.innerHTML = '';
container.appendChild(table);
}

正在处理和输出JavaScript的HTML代码是

<form method="POST">
<div class="canvas" id="input_container">
<script type="text/javascript" src="js/Grid1.js"></script>
</div>
<input name="Confirm" type="submit">

当我尝试访问这些输入提交的值时,我收到了错误消息。我使用PHP,我已经尝试了GET和POST,但我没有运气。

    if (isset($_POST['Confirm'])) 
{
    $test0 =  $_POST['test0'];
    $test1 =  $_POST['test1'];
    $test2 =  $_POST['test2'];
}

我的代码适用于除动态生成的输入表单之外的所有内容。

1 个答案:

答案 0 :(得分:1)

您获得的错误实际上不是错误,而是通知

  

未定义的索引:第y行的x中的test0

为避免您首先应检查这些值是否存在,即:

$test0 = isset($_POST['test0']) ? $_POST['test0'] : 'default value';

或使用PHP7 null coalescing operator

$test0 = $_POST['test0'] ?? 'default value';

更好地解决您的问题

我认为处理动态生成字段的更好方法是使用数组。所以你应该:

  • 在末尾使用大括号[name]的{​​{1}}属性
  • 在后端,迭代该数组。

因此,示例代码可能如下所示:

[]

和PHP:

<input type="number" name="test[]">
<input type="number" name="test[]">
<input type="number" name="test[]">