Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
如何使php请求报告失败_Php_Ajax_Post - Fatal编程技术网

如何使php请求报告失败

如何使php请求报告失败,php,ajax,post,Php,Ajax,Post,我正在尝试使用php请求扫描目录中的文件。这是我现在的代码: $.ajax({ type: "POST", url: "scandir.php", data: { dirname: "./test" }, success: function( data ) { console.log( data ); } error: function() { console.log( "error" ); } })

我正在尝试使用php请求扫描目录中的文件。这是我现在的代码:

$.ajax({
    type: "POST",
    url: "scandir.php",

    data: { dirname: "./test" },
    success: function( data ) {
        console.log( data );
    }   
    error: function() {
        console.log( "error" );
    }
}); 

scandir.php:

<?php
    $dirname = $_POST[ "dirname" ];
    $files = scandir( $dirname ) or die("Unable to scan directory " . $dirname );
    foreach ( $files as $filename ) {
    echo $filename . "\n";
    }
?>


问题是,请求总是成功返回,即使目录“dirname”不存在(它返回php目录未找到消息的文本)。当找不到目录时,如何使其返回错误?

如您所见,
错误
条目仅适用于超时或404未找到等http错误。如果要检查php脚本是否在内部失败,可以使用php的方法
header
设置一个头,或者在success函数中检查php脚本是否返回错误。希望对您有所帮助。

您得到的输出是什么?请在成功输入后添加一个逗号为什么不先检查目录是否存在,然后再使用
scandir
?如果没有,您可以返回您想要的任何内容。我将标题文本编辑为更具体的标题(“HTTP/1.0 404目录未找到:”.$dirname)
if(!empty($_POST["dirname"])) {
    $dirname = $_POST["dirname"];

    if(!is_dir($dirname)) {
        header('HTTP/1.0 404 Not Found');
        exit;
    }
    foreach(scandir($dirname) as $filename) {
        echo $filename . "\n";
    }
}