首先,我不是开发人员,所以这种东西有点不在我的舒适区。
我正在试图弄清楚为什么我在提交表单时没有收到任何帖子数据。我通过按钮使用一些小的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。
答案 0 :(得分:0)
问题不在于动态附加或创建输入。真正的问题是您的输入没有name
属性。
要解决此问题,只需在JavaScript中设置名称属性即可。
input.setAttribute("name", "test");
GET和POST都会创建一个数组(例如array(key =&gt; value,key2 =&gt; value2,key3 =&gt; value3,...))。此数组包含键/值对,其中键是表单控件的名称,值是来自用户的输入数据。