我对 HTML 和 JavaScript 比较陌生,我目前正在修改一家公司 osTicket。
我试图通过使用 JavaScript 延迟第二次提交来在同一页面中提交 2 个表单(我知道 HTML 不支持这一点),但我认为我的代码或思维方式有问题。
这是代码:
<script type="text/javascript">
function x() {
setTimeout(function() {
<?php // Just normal validation, checking if has administrator privileges or not
if(!defined('OSTSCPINC') || !$thisstaff || !$thisstaff->canEditTickets() || !$ticket) die('Access Denied');
$info=Format::htmlchars(($errors && $_POST)?$_POST:$ticket->getUpdateInfo());
if ($_POST)
$info['duedate'] = Format::date($cfg->getDateFormat(),
strtotime($info['duedate']));
echo '<form id="reply" action="tickets.php?id=' . $ticket->getId() . '#reply" name="reply1" method="post" enctype="multipart/form-data">';
csrf_token();
echo '<input type="hidden" name="do" value="update">'; // Fields that are mandatory for the form but don't want them to show
echo '<input type="hidden" name="a" value="edit">';
echo '<input type="hidden" name="id" value="' . $ticket->getId() . '">';
echo '<input type="hidden" name="user_id" id="user_id" value="' . $info['user_id'] . '">';
echo '<input type="hidden" name="source" value="' . $info['source'] . '">';
echo '<input type="hidden" name="topicId" value="' . $info['topicId'] . '">';
echo '<input type="hidden" name="slaId" value="' . $info['slaId'] . '">';
echo '</form>';?>
document.forms['reply1'].submit(); // The second form
}, 2000);
}
</script>
<form id="reply" action="tickets.php?id=<?php echo $ticket->getId();?>#reply" name="reply" method="post" enctype="multipart/form-data">
<!-- a lot of code that it is working properly -->
<input class="btn_sm" type='submit' value="<?php echo __('Post Reply');?>" onclick="x()">
</form>
PHP中的第一个if
只是为了防止普通用户提交此表单,我以管理权限登录。所有的 HTML 和 PHP 都是已经编写好的代码,应该可以正常工作(语法错误除外),我还通过单独提交每个表单进行测试,并按预期工作。
此外,第一个表单正常提交,没有错误,但第二个表单似乎没有被执行。我愿意改进代码并提出建议,谢谢!