2013-05-10 1 views
0

Мне нужно проверить, присутствует ли конкретный файл в папке htdocs моего веб-сервера Apache с запросом Ajax. Я новичок в Ajax. Пожалуйста, дайте мне знать, подходит ли мой подход.как проверить, присутствует ли файл в папке htdocs веб-сервера Apache

Я пишу следующую функцию в Javascript для выполнения вышеуказанного действия.

Адрес, который я рассматривал: "http://film.ts".

function checkURL(url){ 
    var Ajaxhttp; 
    if (window.XMLHttpRequest){ 
     Ajaxhttp=new XMLHttpRequest(); 
    } 
    else{// code for IE6, IE5 
     Ajaxhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    Ajaxhttp.open("HEAD",url,true); 
    Ajaxhttp.onreadystatechange=function(){ 
     if (Ajaxhttp.readyState==4 && Ajaxhttp.status == 200){ 
      data.playoutInfo._playoutUrls[0] = url; 
     } 
     else if(Ajaxhttp.status == 404){ 
      data.playoutInfo._playoutUrls[0] = "http://San_Diego_Clip.ts"; 
     } 
    } 
    Ajaxhttp.send(); 
} 

С приведенным выше кодом я получаю статус 200, даже если файл не существует. Пожалуйста, предложите мне, если я смогу добиться этого с помощью других средств.

+0

Это должно работать нормально. Убедитесь, что сервер не возвращает 200 статусов с текстом страницы ошибки 404 из-за неправильной конфигурации. – Quentin

ответ

0

Вы должны использовать Ajaxhttp.open("GET",url,true); для выдачи запроса GET. Проверьте апи из xhr.open на

https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest

это

void open(
    DOMString method, 
    DOMString url, 
    optional boolean async, 
    optional DOMString user, 
    optional DOMString password 
); 

так, вы получили 200 все время для HEAD запроса.

+0

Зачем вам получить 200 только потому, что вы сделали запрос HEAD? http://jsfiddle.net/pf3KA/ – Quentin

+0

Да, я допустил ошибку –

+0

Нет, если вы хотите запросить параметры о сервере, тогда вы делаете [запрос OPTIONS] (http://www.w3.org/Protocols/ RFC2616/RFC2616-sec9.html # sec9.2). Цель HEAD - получить заголовки HTTP, которые вы получили бы, если бы вы сделали запрос GET. Это идея выяснить, существует ли ресурс (например, не 404), не прося сервер отправить вам весь ресурс. – Quentin

0

В вашей папке htdocs создайте три [3] файла 1) searchFile.php 2) ajaxreq.php, создайте файл, который вызывает его IamAfile.txt.

= внутри searchFile.php = ======== напиши:

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>Looking For A File</title> 

</head> 

<body> 

<div class="repoter">Content for class "repoter" Goes Here</div> 



<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
<script type="text/javascript" > 
$(document).ready(function() { 
$.post("ajaxreq.php", 
    { 
    anyFile:"IamAfile.txt" 

    }, 
    function(data,status){ 
    $(".repoter").html(data); 
    } 
) 
}); 
</body> 
</html> 

== Конец searchFile.php ==

Теперь

== внутри ajaxreq.php == ======== Запишите это:

<?php 
if (isset($_POST['anyFile'])) { 
$anyFile=$_POST['anyFile'];//your in need file 
$ineedFile=$anyFile; 
if (file_exists($ineedFile)) { 

//if the in need file is htdocs folder report this 

$report="The file is here. Named : <a href='$ineedFile' >Open The File Here</a>" ; 

    } 
    else if (!file_exists($ineedFile)) { 

//no such in need file report this 

$report="No Such File In Mentioned Directory"; 

    } 
else{ 
$report="Sorry Dont Understand your request"; 
exit; 
} 

echo $report; 
} 
?> 

================================================================================================================ === Конец ajaxreq.php =============

запрос Test

, если все файлы создаются в вашей HTDOCS копировать вставить эту /searchFile.php в ваш браузер, нажмите enter. Это как я сделаю это с помощью JQuery Ajax

Смежные вопросы