• 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

Object Storage Arubacloud
+1 głos
647 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 Filip31411 Dyskutant (8,820 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 Filip31411 Dyskutant (8,820 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 145 wizyt
pytanie zadane 16 grudnia 2020 w JavaScript przez kacper1445 Gaduła (4,880 p.)
+2 głosów
2 odpowiedzi 260 wizyt
pytanie zadane 23 marca 2021 w JavaScript przez dee Początkujący (360 p.)
0 głosów
1 odpowiedź 208 wizyt
pytanie zadane 2 grudnia 2017 w JavaScript przez UltraSF Stary wyjadacz (11,740 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...