2013-12-18 62 views
0

我想使用PHP請求掃描目錄中的文件。這是我的代碼現在:如何使一個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"; 
    } 
?> 

問題是,請求總是成功返回,即使目錄 「目錄名」 不存在(它返回php目錄未發現消息的文本)。當目錄未找到時,如何返回錯誤?

+0

你的輸出是什麼? –

+1

請在成功登錄後添加逗號 – benestar

+0

爲什麼在使用'scandir'之前先檢查目錄是否存在?如果沒有,你可以返回你想要的任何東西。 – thatidiotguy

回答

1
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"; 
    } 
} 
+0

我編輯了標題文本以更具體地說明 header(「HTTP/1.0 404 Not Found Found:」。$ dirname) – graham

0

正如你所看到的hereerror條目僅用於HTTP錯誤,如超時或未找到404。如果你想檢查php腳本是否在內部失敗,你可以使用php的方法header設置一個頭,或者檢查成功函數是否php腳本返回錯誤。希望有所幫助。