当变量($ fileName)不为空时-在页面上显示一个提交按钮。当按下时,我要执行脚本并使页面上的所有参数保持不变。
我的尝试
if(empty($fileName) ) {
echo "<td><form action='' method='POST'><INPUT TYPE='submit' name='download' VALUE='download'></form></td>\n";
if (isset($_POST['download'])) {
$SCRIPT=shell_exec("script.bash $a $b $c");
}
} else { echo " <td></td>\n "; }
结果应该是:启动脚本和页面保持不变(可以重新加载,但输入参数保持不变)。 但是现在页面已重新加载并清除所有值。
答案 0 :(得分:1)
要实现您的目标,您需要使用表单页面中的Ajax来请求当前页面而无需重新加载。我建议您使用jQuery来正确实现它。此链接jQuery Ajax将演示如何使用表单发布而不重新加载页面。这部YouTube视频还可以帮助您:jQuery Ajax Tutorial。
要记住的一件事是,如果要发送POST请求而不重新加载页面,则需要在启动功能时添加它:
$(".submit_button").click(function(e){
e.preventDefault(); // This will disable the auto refresh after a form submit
$.ajax({
// Your Ajax Code...
})
})
答案 1 :(得分:0)
您可以捕获post var,执行所需的操作并构建输出HTML,以根据需要填充输入。
<?php
// Assuming you are using PHP 7
$a = $_POST['a'] ?? null;
$b = $_POST['b'] ?? null;
$b = $_POST['c'] ?? null;
// Set up to add the value attributes as needed
// If any of the vars is missing, then it will be null
// so no value will be added to the HTML
$value_a = isset($_POST['a']) ? sprintf('value="%s"', $_POST['a']) : null;
$value_b = isset($_POST['b']) ? sprintf('value="%s"', $_POST['b']) : null;
$value_c = isset($_POST['c']) ? sprintf('value="%s"', $_POST['c']) : null;
if ( isset($_POST['download']) ) {
$SCRIPT=shell_exec("script.bash $a $b $c");
}
?>
<form method="post">
<div><input type="text" name="a" <?= $value_a ?> ></div>
<div><input type="text" name="b" <?= $value_b ?> ></div>
<div><input type="text" name="c" <?= $value_c ?> ></div>
<div><input type="submit" name="download"></div>
</form>