XMLHttpRequest oraz względne ścieżki - błąd "404 Not found"

0

W swoim projekcie, w pliku o nazwie image-slider.js używam obiektu XMLHttpRequest, który pobiera plik get-filenames.php (pobierający listę plików z pewnego folderu na serwerze). (Plik image-slider.js załączam i uruchamiam w pliku image-slider-en.php).

I teraz, żeby pobrać plik get-filenames.php, wywołuję metodę open:

(plik: image-slider.js)

...

window.addEventListener("load", function() {
    var request = new XMLHttpRequest();
    ...
    request.open("GET", "get-filenames.php");
    ...
}

Wszystko byłoby w porządku (listę pobierało znakomicie ;) ), gdyby nie to, że ostatnio zechciałem zrefaktoryzować katalogi strony. Plik get-filenames.php znajdował się pierwotnie w tym samym katalogu, co index-en.php, a teraz przeniosłem go do podkatalogu helpers. Tak więc zmieniłem powyższe wywołanie na:

(plik: image-slider.js)

request.open("GET", "helpers/get-filenames.php");

I przestało działać. Daje 404 Not found (...) The requested URL /helpers/get-filenames.php was not found on this server.

Pytania:

1. Dlaczego to nie działa tak, jak bym oczekiwał?
2. Co zrobić, żeby działało?
3. Skąd ten slash na początku rozwiązanego URL (/helpers/get-filenames.php)?

Pierwsze pytanie jest dla mnie ważniejsze. Na tę chwilę rozwiązałem to tak, że przeniosłem plik get-filenames.php do poprzedniej lokalizacji – ale wolałbym mieć go w nowej...

Moja poprzednia (działająca) struktura katalogów:

strona
 |— js
     |— image-slider.js
     |— ...
 |— php
     |— image-slider-en.php <-- w tym pliku dołączam (i uruchamiam) plik get-php.js
     |— get-filenames.php
     |— ...
 |— ...

Moja aktualna (niedziałająca) struktura katalogów:

strona
 |— js
     |— image-slider.js
     |— ...
 |— php
     |— image-slider-en.php <-- w tym pliku dołączam (i uruchamiam) plik get-php.js
     |— helpers
         |— get-filenames.php
     |— ...
 |— ...

UPDATE: Wybaczcie za zamieszanie. Pozmieniałem wszystkie nazwy plików na takie, jakie mam w projekcie.

0

Może być multum powodów dlaczego to nie działa. Możliwe że to przez plik .htaccess, mógłbyś podać nam jego zawartość?

0

Jedyny .htaccess, jaki posiadam na serwerze, znajduje się w głównym katalogu i wygląda tak:

<IfModule dir_module>
    DirectoryIndex index-en.php
</IfModule>

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^([^\.]+)$ $1.php [NC,L]

UPDATE: Zmieniłem wcześniejszą nazwę pliku index.php na tę, co jest tutaj, żeby nie robić zamieszania.

0

Zgodnie z komentarzem, spróbowałem, ale nie działa. Błąd taki sam (tylko ścieżka zwiększyła się o ten człon php). Ale chyba nie powinno działać, skoro na początku jest ukośnik? Przecież nie odwołuję się do / w systemie plików.

UPDATE: Bo właśnie – jeśli przeglądarka szuka mojego żądania w lokalnym systemie plików i ustala ścieżkę bezwzględną poprzez dodanie, hm, / oraz nazwy folderu nadrzędnego, to wersja pierwotna (get-filenames.php bez żadnych ukośników) nie powinna była działać. A działała, więc rozwiązywanie ścieżek inaczej musi wyglądać.

0

Aktualnie stronę otwieram albo wpisując w przeglądarce localhost/image-slider-en.php, albo klikając na link znajdujący się na stronie index-en.php. get-filenames.php jest jedynie plikiem z funkcją pomocniczą, używanym w XMLHttpRequest.


UPDATE: Może pozmieniam nazwy plików na oryginalne, bo mi samemu zaczyna się mieszać. ;)


UPDATE 2: Wybaczcie za zamieszanie. Pozmieniałem wszystkie nazwy plików we wszystkich postach na takie, jakie mam w projekcie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1