使用 ajax 从文件中获取数据

Get data from file using ajax

我正在尝试做这个场景。 如果文件夹为空,则 return false 否则 return true 。 为此,我尝试了这个

function downloadExcel() {
// Mu folder path 
var folder="D:/output";
if (result.isConfirmed) {
                    $.ajax({
                    type: 'POST',
                    url: 'check_file.php',
                    data: {
                        folder: folder
                    },
                    cache: false,
                    success: function(result){
                        if(result==false)
                        {
                            Swal.fire(
                                    'execution success '
                            );
                        }
                        else
                        {
                            Swal.fire(
                                'extraction failed '
                            );  
                        }
                        
                },
                error: function(result){

                   console.log("Error request Ajax");
                } 
                });
                
                refresh();

            } else if (
                result.dismiss === Swal.DismissReason.cancel
            

我的 php 文件来渲染数据 :: check_file.php

<?php
if (!empty($_POST["folder"])) {
$dir = $_POST['folder'];
}

if (is_dir_empty($dir)) {
echo "the folder is empty"; 
$result=false;

}else{
 echo "the folder is NOT empty";
 $result=true; 
}

return $result;


function is_dir_empty($dir) {
if (!is_readable($dir)) return null; 
return (count(scandir($dir)) == 2);
}

?> 

当我 运行 我的 check_file.php 检查目录是否为空时工作正常。

但是当我尝试 $result 变量时,我的代码出现了问题

$result 变量始终为空

  1. 您永远不会回显 $result - 即使您回显了布尔值 false 实际上也不会产生任何可见输出。使用 return 结束脚本的主要部分不是必需的,没有多大意义,当然也不会产生任何输出。

  2. 回显的东西既不包含true也不包含false,所以很明显JS代码不会匹配那些要么。

  3. 为了让JS准确检测到truth-y或false-y值,最好输出数字01而不是字符串。

  4. 另外一点,除非已填充,否则不要尝试使用 $dir 是有意义的。

这个版本应该对你有帮助(请注意,如果 $_POST["folder"] 中没有值,它不会输出 anything - 你可能想添加一些额外的东西来处理那个,但我会留给你):

<?php
if (!empty($_POST["folder"])) 
{
  $dir = $_POST['folder'];
  $result;

  if (is_dir_empty($dir)) $result = 0; 
  else $result = 1;

  echo $result;
}

function is_dir_empty($dir) {
  if (!is_readable($dir)) return null; 
  return (count(scandir($dir)) == 2);
}
?>