Javascript 除非按下按钮,否则禁用按钮

Javascript 除非按下按钮,否则禁用按钮,javascript,php,button,Javascript,Php,Button,我想禁用一些按钮,直到按下按钮 第一个按钮(button1)生成一个文件。其余按钮与该文件有关(查看、下载等) 我尝试禁用按钮,直到按下第一个按钮,但由于我使用post请求,当我按下按钮1时,页面会刷新,所有内容都会重置 我一直在考虑对文件进行grep,并将其分配给PHP中的一个变量,然后根据该文件是否存在禁用/启用按钮,但我不确定如何进行PHP/JS交叉。任何指导都将不胜感激。您需要的是AJAX 单击第一个按钮,对检查上述文件的php文件进行AJAX调用。如果找到文件,则将PHP设置为返回tr

我想禁用一些按钮,直到按下按钮

第一个按钮(button1)生成一个文件。其余按钮与该文件有关(查看、下载等)

我尝试禁用按钮,直到按下第一个按钮,但由于我使用post请求,当我按下按钮1时,页面会刷新,所有内容都会重置


我一直在考虑对文件进行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,但是你还需要编写更多的代码,但是这样做可以在不刷新整个页面的情况下完成。