在html按钮中调用javascript函数时出错

时间:2019-05-16 09:01:55

标签: javascript php html ajax web

我正在尝试在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>

2 个答案:

答案 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]);