创建动态表单元素时没有POST数据

时间:2016-10-17 18:37:45

标签: javascript php forms

首先,我不是开发人员,所以这种东西有点不在我的舒适区。

我正在试图弄清楚为什么我在提交表单时没有收到任何帖子数据。我通过按钮使用一些小的javascript来创建动态表单元素并提交它们。

我有以下html代码段:

uiAlertController.view.tintColor = UIColor.blueColor()

javascript看起来像这样:

       <form id="admin_approvals" method="post" action="process_request.php">
              <table>
              <tr><th>Task</th><th>Status</th><th colspan="3">Action</th></tr>
             <tr>
                <td>New phone purchase</td>
                <td>WAITING APPROVAL</td>
                <td><button type="button" id="approve" onclick="actionRequest('APPROVE',94)">APPROVE</button></td>
                <td><button type="button" id="reject" onClick="actionRequest('REJECT',94)">REJECT</button></td>
                <td><button type="button" id="delete" onClick="actionRequest('DELETE',94)">DELETE</button></td>
             </tr> 
            </table>
        </form>

而php只是为了调试目的而这样做:

function actionRequest(keyword,task_id) {

    var input = document.createElement("input");
    input.setAttribute("type", "hidden");
    input.setAttribute("action",keyword);
    input.setAttribute("task",task_id);

    document.getElementById("admin_approvals").appendChild(input);
    document.getElementById("admin_approvals").submit();
}

点击按钮后我看到的只是一个空白数组:

print_r($_POST);

我已尝试在Javascript中使用getAttribute进行调试,并且正在设置值。只是看起来没有数据正在POST。

1 个答案:

答案 0 :(得分:0)

问题

问题不在于动态附加或创建输入。真正的问题是您的输入没有name属性。

解决方案

要解决此问题,只需在JavaScript中设置名称属性即可。

input.setAttribute("name", "test");

来源

  

GET和POST都会创建一个数组(例如array(key =&gt; value,key2 =&gt; value2,key3 =&gt; value3,...))。此数组包含键/值对,其中键是表单控件的名称,值是来自用户的输入数据。

http://www.w3schools.com/php/php_forms.asp