Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在php post方法中使用jquery_Javascript_Php_Jquery - Fatal编程技术网

Javascript 在php post方法中使用jquery

Javascript 在php post方法中使用jquery,javascript,php,jquery,Javascript,Php,Jquery,我在jquery和ajax方面不是很有经验,但我需要以下几点。用户成功登录后,可以从页面下载pdf文件。该网站有一个折叠分区,用户可以从中选择下载哪个文件。一切都是在php中完成的,工作正常。但是,如果找不到该文件,则将关闭折叠div。换句话说,网页会被重新加载。因此,用户必须重新进行选择,这很不方便。因此,我将做以下几点。如果找不到该文件,则div应保持折叠状态,并保留表单上输入字段“s”中的上一个值。我知道这应该通过jquery或javascript来完成。我尝试了以下方法,但不起作用

我在jquery和ajax方面不是很有经验,但我需要以下几点。用户成功登录后,可以从页面下载pdf文件。该网站有一个折叠分区,用户可以从中选择下载哪个文件。一切都是在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>
//PHP
试试这个

$.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>

$(文档).ready(函数(){
var hasDownload=“”;
var oldInput=“”;
if(hasDownload==false){
$('#collapseOne').show();
$('input#s').val(oldInput);
}
})        
当服务器为您的文件提供服务时,这些值将出现在您的Javascript中。将jQuery放在另一个if语句的底部&一个docready块中,以便首先加载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; ?>

是否应该将其放在不同的.js文件中?您好,您的代码可以正常工作。谢谢你。因为我还有一个正在折叠的div,当表单提交并执行javascript时,旧数据会出现在div中。然而,当我尝试打开第二个div时,第一个div仍然可见,这会扭曲html页面吗?你知道怎么解决这个问题吗?例如,我需要javascript执行一次,这样用户就可以打开他们想要的任何div第二个div的id或类是什么?当另一个打开时,您基本上想要关闭吗?是的,就是id=“collapseTwo”。我想允许用户在提交表单后选择例如第二个div,页面应该在没有第一个div的情况下继续工作,将其和附加HTML发布到一个新问题中,并链接到这里,这样我可以尝试一下。您不必在新问题中包含PHP,因为它只与HTML/Jquery相关