我想禁用某些按钮,直到按下按钮。
第一个按钮(button1)生成一个文件。其余的按钮与该文件有关(查看,下载等)
我尝试禁用按钮,直到按下第一个按钮,但是当我使用发布请求时,当我按下button1并重置所有内容时页面会刷新。
我正在考虑对文件进行grep-ing并将其分配给PHP中的变量,然后根据该文件是否存在来禁用/启用按钮,但我不确定该怎么做PHP / JS交叉。任何指导都将不胜感激。
答案 0 :(得分:1)
您应该使用异步页面加载。只需将一个请求字符串发送到服务器,它就会回复你的答案。而无需重新加载页面。
var jstring = JSON.stringify(request); //wrap up your specification in an JSON
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "http://" + window.location.hostname + "/request",
data: jstring,
success: function(response) {
//... enable buttons
},
error: function(response) {
//... file could not be loaded
}
});
在PHP中
if ($_GET["type"] === 'request') {
$jsonraw = $decode ? utf8_encode(file_get_contents("php://input")) : file_get_contents("php://input");
$jsonstring = json_encode($jsonraw, true);
$array = json_decode($jsonraw, true);
//... do something with $array
}
答案 1 :(得分:0)
您需要的是AJAX。
点击第一个按钮,进行AJAX调用,检查上述文件的php文件。如果找到文件,则将PHP设置为返回true,否则设置为false。
最后,在ajax的回调中,如果返回的代码成功,则javascript会发生变化。
我不会为你编写代码,但我会给你一个链接。应该绰绰有余。
http://api.jquery.com/jquery.ajax/
请注意,您需要jQuery来执行该示例。
答案 2 :(得分:0)
您也可以在没有ajax的情况下执行此操作。您也可以使用会话执行此操作。
将其保存在会话中,在保存任何会话之前,在创建文件后禁用按钮视图,下载等,然后保存会话,这将确定已禁用的属性。
粗略示例:
session_start();
if(isset($_POST['create_file'])) {
$_SESSION['file_exists'] = true;
// generate file blah blah
echo 'File created: stackoverflow.jpg <br/>';
}
// now you decide when to destroy the session for this
// unset($_SESSION['file_exists']);
?>
<form method="POST">
<input type="submit" name="create_file" value="Create File" /><br/><hr/>
<input type="submit" name="view_file" value="View File" <?php echo !isset($_SESSION['file_exists']) ? 'disabled' : ''; ?> /><br/>
<input type="submit" name="download_file" value="Download File" <?php echo !isset($_SESSION['file_exists']) ? 'disabled' : ''; ?> /><br/>
</form>