• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z odczytem pliku przez ajax

+1 głos
880 wizyt
pytanie zadane 23 września 2016 w JavaScript przez Madar Obywatel (1,560 p.)

Witam
Chciałem popróbować jak działa Ajax, znalazłem na https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started przyklad uzycia. Program wygląda na prosty, po prostu sprawdza, czy plik został poprawnie odczytany i przesłany. Jedynie zmieniłem ścieżkę do pliku, zamiast "test.html" podałem swoją nazwę i tam umieściłem tekst, który powinien zostać wyświetlony po kliknięciu w span.

Kod podaję poniżej:

 

<!DOCTYPE html>
<html>
<head>
  
</head>
  <body>

  <span id="ajaxButton" style="cursor: pointer; text-decoration: underline">
  Make a request
  </span>

  <script type="text/javascript">
  (function() {
    var httpRequest;
    document.getElementById("ajaxButton").onclick = function() { makeRequest('test.html'); };

    function makeRequest(url) {
      httpRequest = new XMLHttpRequest();

      if (!httpRequest) {
        alert('Giving up :( Cannot create an XMLHTTP instance');
        return false;
      }
      httpRequest.onreadystatechange = alertContents;
      httpRequest.open('GET', url);
      httpRequest.send();
    }

    function alertContents() {
      if (httpRequest.readyState === XMLHttpRequest.DONE) {
        if (httpRequest.status === 200) {
          alert(httpRequest.responseText);
        } else {
          alert('There was a problem with the request.');
        }
      }
    }
  })();
  </script>
</body>
</html>


A taki błąd zwraca mi konsola:

XMLHttpRequest cannot load file:///C:/Users/Marcin/Documents/My%20programming/Ajax/index.html. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.

 

Czy ktoś wie dlaczego to nie chce działać? Dodam, że plik, który chce przesłać mam w tym samym folderze co plik z kodem.

komentarz 24 września 2016 przez Filip2248 Dyskutant (8,840 p.)

Jak już się obeznasz w ajax'ie przez JavaScript to polecam Ci nauczyć się ajax'a przez jQuery. Dużo prostsza składnia i krótszy kod:

$.ajax({
    url: 'test.txt',
    success: function (result) {
        alert(result);
    },
    error: function () {
        alert('error');
    }
});

Sam się ostatnio przesiadłem :)

komentarz 24 września 2016 przez Pietrak Pasjonat (18,850 p.)
Ładowanie całej biblioteki dla ajaxa? ...
komentarz 25 września 2016 przez Filip2248 Dyskutant (8,840 p.)
No racja, ale jak by już podpiął jQuery no to może zrobić wiele nowych rzeczy. A nie tylko użyć ajax'a.

1 odpowiedź

+1 głos
odpowiedź 23 września 2016 przez tinwepl Użytkownik (990 p.)
Musisz zmienić index.html do index.php i odpalić np na  XAMPP.
komentarz 23 września 2016 przez Madar Obywatel (1,560 p.)
Nie da się tego zrobić bez serwera?
komentarz 23 września 2016 przez tinwepl Użytkownik (990 p.)
Z tego co mi wiadomo to nie :)

http://www.w3schools.com/ajax/ajax_intro.asp

Rysunek :)
komentarz 23 września 2016 przez Madar Obywatel (1,560 p.)
Ok, działa. :) Dzięki wielkie za pomoc :)
1
komentarz 23 września 2016 przez niezalogowany

Musisz zmienić index.html do index.php i odpalić np na  XAMPP

PHP nie ma nic do tego.

Wszystko wyjaśnione jest w błędzie, którym rzuca przeglądarka:

Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.

Po polsku: Takie ładowanie plików, możliwe jest tylko przy użyciu podanych protokołów: http, https itd...

Koledze chodziło prawdopodobnie o to, że możesz postawić hosta z apache (XAMPP), który będzie obsługiwał HTTP.

Zmiana nazwy pliku, de facto, nic nie zmienia - równie dobrze, można postawić wszystko w JSsie, czy pythonie.

komentarz 24 września 2016 przez ScriptyChris Mędrzec (190,190 p.)
A to nie jest przypadkiem zabezpieczenie w Chrome? Wydaje mi się, że Firefox umożliwia ładowanie AJAXem plików z dysku.
komentarz 24 września 2016 przez niezalogowany
Być może. Ale w takim wypadku tym bardziej nie trzeba zmieniać nazwy pliku : )

Podobne pytania

0 głosów
0 odpowiedzi 194 wizyt
pytanie zadane 16 grudnia 2020 w JavaScript przez kacper1445 Mądrala (5,050 p.)
+2 głosów
2 odpowiedzi 489 wizyt
pytanie zadane 23 marca 2021 w JavaScript przez dee Początkujący (360 p.)
0 głosów
1 odpowiedź 236 wizyt
pytanie zadane 2 grudnia 2017 w JavaScript przez UltraSF Stary wyjadacz (11,740 p.)

93,427 zapytań

142,421 odpowiedzi

322,649 komentarzy

62,787 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...