我有以下代码。我需要表单中的变量“$computerID”和变量“hardwareComputerName”。我测试了一些东西,但没有任何效果。变量“$computerID”没有问题。
形式:
<form id="computerRenameForm" action="computerRename" method="post">
<input type="hidden" name="rename" value="">
<input type="hidden" name="computerID" value="<?= htmlspecialchars($computer->id) ?>">
</form>
<button onclick="confirmComputerRename()"><i class="bi bi-trash-fill"></i> Umbenennen</button>
<script>
function confirmComputerRename()
{
(async () => {
const { value: hardwareComputerName } = await Swal.fire({
html: "Zum Umbenennen muss der Computer online sein.<br>Das Gerät wird neu gestartet.",
icon: 'warning',
input: 'text',
inputAttributes: {maxlength: 15},
showCancelButton: true,
confirmButtonText: 'OK',
confirmButtonColor: '#ff0000',
cancelButtonText: 'Abbrechen',
reverseButtons: false
})
if (hardwareComputerName) {
document.getElementById("computerRenameForm").submit();
}
})()
}
</script>
控制器:
<?php
if (isset($_POST['rename'])) {
$computerID = $_POST['computerID'];
$hardwareComputerName = $_POST['hardwareComputerName'];
var_dump($computerID)."<br>"; // Works
var_dump($hardwareComputerName); // Works not
}
?>
PHP 全局变量
$_POST
包含发布到服务器的所有数据。目前,hardwareComputerName
只是客户端的一个变量。您需要将其添加到表单中,以便可以将其发布到服务器。只有这样你才能从$_POST['hardwareComputerName']
读取它。
一种方法:
向您的表单添加另一个隐藏元素:
<input type="hidden" name="hardwareComputerName" id="computerName">
在对话框结果之后,将输入值添加到新创建的元素中:
if (hardwareComputerName) {
document.getElementById("computerName").value = hardwareComputerName;
document.getElementById("computerRenameForm").submit();
}
完成:
<form id="computerRenameForm" action="computerRename" method="post">
<input type="hidden" name="rename" value="">
<input type="hidden" name="computerID" value="<?= htmlspecialchars($computer->id) ?>">
<input type="hidden" name="hardwareComputerName" id="computerName">
</form>
<button onclick="confirmComputerRename()"><i class="bi bi-trash-fill"></i> Umbenennen</button>
<script>
function confirmComputerRename()
{
(async () => {
const { value: hardwareComputerName } = await Swal.fire({
html: "Zum Umbenennen muss der Computer online sein.<br>Das Gerät wird neu gestartet.",
icon: 'warning',
input: 'text',
inputAttributes: {maxlength: 15},
showCancelButton: true,
confirmButtonText: 'OK',
confirmButtonColor: '#ff0000',
cancelButtonText: 'Abbrechen',
reverseButtons: false
})
if (hardwareComputerName) {
document.getElementById("computerName").value = hardwareComputerName;
document.getElementById("computerRenameForm").submit();
}
})()
}
</script>