我在 php/xhtml 页面上有一个<select
元素。 我没有使用提交按钮,而是尝试实现Javascript onchange()
和submit()
方法。 我需要传递多个变量来弥补丢失的隐藏字段。 onchange和提交方法正在触发,但我无法让它触发同一页面上的PHP isset。
<?php
if(isset($_POST['companykey'])){
$nowIveGot1 = $_POST['COMPANYKEY'];
$nowIveGot2 = $_POST['USERNAME'];
?>
<script language="javascript">
function copy(selectedValuePassed, selectedNamePassed, userIDPassed, formNamePassed) {
var formNameReceived = formNamePassed;
var userIDReceived = userIDPassed;
var selectedValueReceived = selectedValuePassed;
var selectedNameReceived = selectedNamePassed;
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", "");
form.setAttribute("name", formNameReceived);
form.setAttribute("id", formNameReceived);
var valueSelected = document.createElement("input");
valueSelected.setAttribute("type", "hidden");
valueSelected.setAttribute("name", selectedNameReceived);
valueSelected.setAttribute("id", selectedNameReceived);
valueSelected.setAttribute("value", selectedValueReceived);
form.appendChild(valueSelected);
var passusername = document.createElement("input");
passusername.setAttribute("type", "hidden");
passusername.setAttribute("name", "USERNAME");
passusername.setAttribute("id", "USERNAME");
passusername.setAttribute("value", userIDReceived);
form.appendChild(passusername);
document.body.appendChild(form);
form.submit();
}
</script>
<select onchange="copy(this, 'COMPANYKEY','jarrett', 'companykey');">
<option value="Text1">Text 1</option>
<option value="Text2">Text 2</option>
</select>
已解决:为 valueSelected 和 passusername 创建一个父元素。 将其命名为 isset 检查名称。
如果我理解你的问题...
<?php
if(isset($_POST['companykey'])){
$nowIveGot1 = $_POST['COMPANYKEY'];
$nowIveGot2 = $_POST['USERNAME'];
}
$_POST['companykey']
将永远是null
的,if
的条件永远不会执行。
这是因为当键值对附加到<form>
元素时,它们不会传递到$_POST
数组中,只会传递到嵌入的<input>
数组中。
在你的 JavaScript 中,你把'companykey'
作为最后一个参数传递给copy
。从那里它被分配给formNameReceived
.然后,使用以下命令将其分配给表单的name
属性:
form.setAttribute("name", formNameReceived);
form.setAttribute("id", formNameReceived);
'companykey'
永远不会像这样出现在$_POST
数组中,它不会附加到输入,而是附加到form
本身。
作为一个普通的HTML模拟,想象一下:
<? print_r($_POST);?>
<html>
<body>
<form method='post' name='cat' value='dog'>
<input type='hidden' name='foo' value='bar'/>
<input type='submit'/>
</form>
</body>
</html>
无论您提交此表单多少次,它都不会包含cat -> dog
对。如果您希望'companykey'
出现在数组中,则必须将其分配给另一个隐藏的输入。