繁体   English   中英

在PHP post方法中使用jquery

[英]using jquery in php post method

我对jquery和ajax的经验不是很丰富,但是我需要以下内容。 用户成功登录后,他们可以从页面下载pdf文件。 该网站有一个折叠div,他们可以从中选择要下载的文件。 一切都在php中完成,并且可以正常运行。 但是,如果找不到该文件,则将div封闭。 换句话说,网页被重新加载。 因此,用户不得不重新进行新的选择,这很不方便。 因此,我将采取以下行动。 如果找不到该文件,则div应该保持折叠状态,并且表单上输入字段's'中的前一个值。 我知道这应该通过jquery或javascript完成。 我已经尝试了以下方法,但是它不起作用。

         //PHP

  <?php
    //if download is clicked
     if (isset($_POST["download"])) {
    $data = $_POST["s"];

     //if file is found
     if (fileexists($data){
    // We'll be outputting a PDF 
    header('Content-type: application/pdf'); 

    // It will be called downloaded.pdf 
    header('Content-Disposition: attachment; filename="downloaded.pdf"'); 

    // The PDF source is in original.pdf 
    readfile($data); 
    }
    //else the div should remain open
    else{  
         echo "<script> if ($('#collapseOne').is(':hidden')) {
               $('#collapseOne').show();
              }</script>";
     }
   } 
     ?>              

         <div id="collapseOne" class="panel-collapse collapse">
            <div class="panel-body">
                <form id='searchForm' method="post" action=''>
                <p><label>Select Month</label></p>
                <input id='s' name = 's' type='text' required><br><br>
                <button type="submit" id='download' name='download' class='btn btn-default btn-lg'>
                    <span class='glyphicon glyphicon-download-alt'></span> Download
                </button>
                <br> <br>
                <button id='download1' name = 'download1' class='btn btn-default btn-lg'>
                    <span class='glyphicon glyphicon-download-alt'></span> Download All
                </button>
               </form>              
              </div>
        </div>

试试这个!

$.ajax({
    url:"/path/to/your/script/",
    type: "post",
    data: //fetch the data which you want to pass
}).done(function(status){
    //status is the data returned from the script called
});

简而言之,您将PHP回显为Javascript

<script> 
    $(document).ready(function(){
        var hasDownload = "<?php echo $_POST['download']; ?>";
        var oldInput = "<?php echo $_POST['s']; ?>";
        if(hasDownload == false) {
           $('#collapseOne').show();
           $('input#s').val(oldInput);
        }
    })        
</script>

服务器提供文件时,这些值将显示在Javascript中。 将您的jQuery放在另一个if语句和一个doc ready块的底部,以便首先加载dom,并将PHP变量回显到Javascript变量中以执行jQuery逻辑。

<?php

    if (isset($_POST["download"]) && fileexists($_POST["s"]) {
        header('Content-type: application/pdf'); 
        header('Content-Disposition: attachment; filename="downloaded.pdf"'); 
        readfile($_POST["s"]); 

    } 

?>              

<div id="collapseOne" class="panel-collapse collapse">
    <div class="panel-body">
        <form id='searchForm' method="post" action=''>
            <p><label>Select Month</label></p>
            <input id='s' name = 's' type='text' required><br><br>
            <button type="submit" id='download' name='download' class='btn btn-default btn-lg'>
                <span class='glyphicon glyphicon-download-alt'></span> Download
            </button>
            <br> <br>
            <button id='download1' name = 'download1' class='btn btn-default btn-lg'>
                <span class='glyphicon glyphicon-download-alt'></span> Download All
            </button>
       </form>              
    </div>
</div>

<?php if(isset($_POST["download"]) == false && fileexists($_POST["s"] == false) : ?>  
    <script> 
        $(document).ready(function(){
            var hasDownload = "<?php echo $_POST['download']; ?>";
            var oldInput = "<?php echo $_POST['s']; ?>";
            if(hasDownload == false) {
               $('#collapseOne').show();
               $('input#s').val(oldInput);
            }
        })        
    </script>
<?php endif; ?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM