Javascript 除非按下按钮,否则禁用按钮
我想禁用一些按钮,直到按下按钮 第一个按钮(button1)生成一个文件。其余按钮与该文件有关(查看、下载等) 我尝试禁用按钮,直到按下第一个按钮,但由于我使用post请求,当我按下按钮1时,页面会刷新,所有内容都会重置Javascript 除非按下按钮,否则禁用按钮,javascript,php,button,Javascript,Php,Button,我想禁用一些按钮,直到按下按钮 第一个按钮(button1)生成一个文件。其余按钮与该文件有关(查看、下载等) 我尝试禁用按钮,直到按下第一个按钮,但由于我使用post请求,当我按下按钮1时,页面会刷新,所有内容都会重置 我一直在考虑对文件进行grep,并将其分配给PHP中的一个变量,然后根据该文件是否存在禁用/启用按钮,但我不确定如何进行PHP/JS交叉。任何指导都将不胜感激。您需要的是AJAX 单击第一个按钮,对检查上述文件的php文件进行AJAX调用。如果找到文件,则将PHP设置为返回tr
我一直在考虑对文件进行grep,并将其分配给PHP中的一个变量,然后根据该文件是否存在禁用/启用按钮,但我不确定如何进行PHP/JS交叉。任何指导都将不胜感激。您需要的是AJAX 单击第一个按钮,对检查上述文件的php文件进行AJAX调用。如果找到文件,则将PHP设置为返回true,否则设置为返回false 最后,在ajax的回调中,如果返回的代码成功,则进行javascript更改 我不会为你写代码,但我会给你一个链接。这应该足够了
请注意,您需要jQuery来执行该示例。您应该使用异步页面加载。只需向服务器发送一个请求字符串,它就会回显您的答案,而无需重新加载页面
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
}
您也可以在不使用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>
session_start();
如果(isset($\u POST['create\u file'])){
$\u会话['file\u exists']=true;
//生成文件等等
echo“已创建文件:stackoverflow.jpg
”;
}
//现在您可以决定何时为此销毁会话
//取消设置($_会话['file_exists']);
?>
/>
您可以使用ajax功能发布来自第一个按钮的数据,这意味着没有页面刷新,因此按钮将被启用?您真的不需要ajax来实现这一点。我要做的是将其保存在会话中,在保存任何会话之前,在创建文件后禁用按钮查看、下载等,然后保存一个会话,这将确定按钮上的属性disabled
,我不知道您可以对会话执行此操作。我想用Ajax来做,但我还没有学会,所以谢谢你简单的回答@用户3875711是的,当然你可以在会话中完成,当然你也可以使用AJAX,但是你还需要编写更多的代码,但是这样做可以在不刷新整个页面的情况下完成。