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