Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Ajax status = 0
Forum PHP.pl > Forum > Przedszkole
ratatui
Dawno nie pisałem stron, teraz kiedy potrzebuję prostą stronę zrobić to mam jakiś dziwny problem z AJAXem czysto JSowym. Pole readyState obiektu ajax równa się 4 tak jak ma być, ale pole status = 0. Co zrobić by temu zaradzić?

  1. <!DOCTYPE html>
  2. <head>
  3. <title>Title of the document</title>
  4. <script type="text/javascript">
  5. var State = { // enumerator JS'owski. To są stany naszej aplikacji HTMLowskiej
  6. Input: 0,
  7. ShowingForm: 1
  8. };
  9.  
  10. var applicationState = State.Input; // na początku stan Input, bo chcemy wprowadzić dane
  11. var frame;
  12.  
  13. function init() {
  14. frame = document.getElementById("frame");
  15. renderPage();
  16. }
  17.  
  18. function getAJAXObject() {
  19. if(window.XMLHttpRequest) // code for IE7+, Firefox, Chrome, Opera, Safari
  20. return new XMLHttpRequest();
  21. else // code for IE6, IE5
  22. return new ActiveXObject("Microsoft.XMLHTTP");
  23. }
  24.  
  25. function renderPage() {
  26. switch(applicationState) {
  27. case State.Input:
  28. var ajax = getAJAXObject();
  29. ajax.onreadystatechange = function() {
  30. if(ajax.readyState == 4 && ajax.status == 200) {
  31. frame.innerHTML = "Wczytano";
  32. } else frame.innerHTML = "Problem " + ajax.readyState + "; " + ajax.status + "; " + ajax.statusText;
  33. }
  34. ajax.open("GET", 'page_input.html', true);
  35. ajax.send(null);
  36. break;
  37. case State.ShowingForm:
  38. alert("xd");
  39. break;
  40. }
  41. }
  42. </script>
  43. body { margin: 0; padding: 0; }
  44. #frame { width: 800px; height: 600px; border: 1px solid black; margin: 100px auto 0 auto; }
  45. </style>
  46. </head>
  47. <body onload="init();">
  48. <div id="frame"></div>
  49. </body>
  50. </html>
ratatui
Oczywiście katalogi są w porządku:


O co tutaj chodzi? Rozwiązanie pewnie jest banalne ale długo nie siedziałem w webie i patrzę na to i nie wiem co czynić ;d.
ratatui
Przerobiłem to na jQuery i to samo. Dodatkowo tutaj bład się pokazuje 404 error. A żeby było jeszcze ciekawiej to nawet w dokumentacji jquery tam gdzie jest przykład poprawnego wczytania z pliku w podglądzie jest error.
http://api.jquery.com/load/
W "Example: Display a notice if the Ajax request encounters an error." jest przykład kodu, a pod kodem jest Demo i jest ono wadliwe.
  1. Successful Response (should be blank):
  2. Error Response:
  3. Sorry but there was an error: 404 Not Found
owca_82
Wszystko działa jak należy tylko:

1. nie uruchamiaj stronki bezpośrednio z dysku, tylko wrzuć na jakiś lokalny serwer i tam odpal.
2. w pliku pobieranym skorzystaj z echo, ewentualnie dodaj do tego co masz deklarację XML'a

page_input.php =>
Kod
<?php echp '<p>Pobrany tekst</p>'; ?>

page_input.xml =>
Kod
<?xml version="1.0"?>
<p>Pobrany tekst</p>


3. skorzystaj z metody responseText =>
Kod
frame.innerHTML = "Wczytano"+ ajax.responseText;

ratatui
Właśnie nie chcę PHP ani serwera bo to ma być prosta stronka odpalana z dysku. Ale już sobie poradziłem. Dodałem treści podstron na głównej stronie w divach z display: none i odpowiednio włączam div który chce. smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.