我正在尝试在html中的按钮上调用JavaScript函数。按钮和JavaScript函数都在同一个文件中,但是出现错误,提示该函数不可用。
function countFiles() {
$directory = "/uploadFiles";
$filecount = 0;
$files = glob($directory.
"*");
if ($files) {
$filecount = count($files);
}
if ($filecount > 0) {
echo '<script type="text/javascript">',
'window.location.href = "decrypt.php";',
'</script>';
} else {
echo "<script type='text/javascript'>alert('Precisa de inserir pelo menos 1 ficheiro');</script>";
}
}
<button onclick="countFiles()">Desencriptar</button>
答案 0 :(得分:0)
首先,将您的后端与前端分开。您的php代码应该是分开的,并且连接应该通过ajax进行(就像您在标记中提到的一样)。
对于test.php文件:
<?php
$directory = "/uploadFiles";
$filecount = 0;
$files = glob($directory . "*");
if ($files){
$filecount = count($files);
}
echo $filecount;
?>
在这里应用所需的逻辑并返回输出。
在您的前端文件中,您可以像这样处理来自php的响应:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button onclick="countFiles()">Desencriptar</button>
<script>
function countFiles(){
$.ajax({
url: "test.php",
context: document.body
}).done (function(result) {
if(result <= 0){
alert('Precisa de inserir pelo menos 1 ficheiro')
}
else{
window.location.href = "decrypt.php"
}
});
}
</script>
答案 1 :(得分:0)
根据您的评论
我想在html按钮中调用函数。此函数计算目录具有的文件数。如果文件数> 1,则页面将被重定向。
您可以通过AJAX通过异步调用PHP来实现。
方法1:异步调用
Models
然后,创建一个名为<script>
function countFiles() {
$.ajax({
url: "getFileCount.php",
success: function(result) {
if (result.count > 0) {
window.location.href = "decrypt.php";
} else {
alert('Precisa de inserir pelo menos 1 ficheiro');
}
}}
);
</script>
getFileCount.php
方法2
但是,如果您不希望在页面加载和单击按钮之间更改文件数,则不需要AJAX,
header('Content-Type: application/json');
$directory = "/uploadFiles";
$filecount = 0;
$files = glob($directory . "*");
if ($files){
$filecount = count($files);
}
echo json_encode(['count' => $filecount]);