0

我创建了一个简单的表单,它允许用户根据自己的选择添加和删除行。在用户决定添加多少行并相应地填充表单后,提交后,我想发布数据,以便我可以使用 .php 脚本将数据上传到服务器上。

我已经测试了添加和删除行的功能。当我单击提交按钮时,它会将我重定向到 upload.php,但在该页面上,我看到一个错误:“未定义索引:奖励”,这让我认为数据没有正确发送。

我下面的实现有问题吗?

HTML

<button onclick="addRow();">Add Row</button>
<form method="post" action="upload.php">
    <table border="1" id="optionsTable">
        <tr>
        <td>Header1</td>
        <td>Header2</td>
        <td>Delete</td>
        </tr>

        <tr id="templateRow" style="display:none">
        <td><input type="text" id="reward" /></td>
        <td><input type="text" id="duration" /></td>
    <td><input type="button" id="deleteOption" value="Delete"     onclick="delRow(this)"/></td>
        </tr>
    </table>

    <input type="submit" value="Submit" />
</form>

</body>
</html>

<script>
var maxID = 0;
function getTemplateRow() {
    var x = document.getElementById("templateRow").cloneNode(true);
    x.id = "";
    x.style.display = "";
    x.innerHTML = x.innerHTML.replace(/{id}/, ++maxID);
    return x;
}
function addRow() {
    var t = document.getElementById("optionsTable");
    var rows = t.getElementsByTagName("tr");
    var r = rows[rows.length - 1];
    r.parentNode.insertBefore(getTemplateRow(), r);
}
function delRow(row) {
    var i=row.parentNode.parentNode.rowIndex;
    document.getElementById('optionsTable').deleteRow(i);
}

</script>

我现在只使用upload.php进行调试,所以那里只有一个命令:echo($_POST['reward']);

任何帮助将不胜感激。

4

2 回答 2

3

输入需要一个属性name。例如:

<input type="text" id="reward" name="reward" />

于 2013-02-04T07:39:58.387 回答
3

您需要为输入定义名称。

<input type="text" id="reward" />

<input type="text" id="reward" name="reward"/>
于 2013-02-04T07:40:20.243 回答