Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/AJAX] aktualny czas
Forum PHP.pl > Forum > Przedszkole
hhg
dzisiaj zaczalem sie wreszcie uczyc AJAXa ale jak zwykle paczatki sa ciezkie party.gif

dlaczego ten kod zamiast czasu pokazuje Error! ?


  1. <title>Ajax Tutorial For Newbie</title>
  2. .displaybox {
  3. width:150px;
  4. background-color:#ffffff;
  5. border:2px solid #000000;
  6. padding:10px;
  7. font:24px normal verdana, helvetica, arial, sans-serif;
  8. }
  9. <script language="JavaScript" type="text/javascript">
  10. function getXMLHTTPRequest() {
  11. try {
  12. req = new XMLHttpRequest();
  13. } catch(err1) {
  14. try {
  15. req = new ActiveXObject("Msxml2.XMLHTTP");
  16. } catch (err2) {
  17. try {
  18. req = new ActiveXObject("Microsoft.XMLHTTP");
  19. } catch (err3) {
  20. req = false;
  21. }
  22. }
  23. }
  24. return req;
  25. }
  26.  
  27. var http = getXMLHTTPRequest();
  28.  
  29. function getServerTime() {
  30. var myurl = 'gettime.php';
  31. myRand = parseInt(Math.random()*999999999999999);
  32. var modurl = myurl+"?rand="+myRand;
  33. http.open("GET", modurl, true);
  34. http.onreadystatechange = useHttpResponse;
  35. http.send(null);
  36. }
  37.  
  38. function useHttpResponse() {
  39. if (http.readyState == 4) {
  40. if(http.status == 200) {
  41. var timeValue = http.responseXML.getElementsByTagName("timenow")[0];
  42. document.getElementById('showtime').innerHTML = timeValue.childNodes[0].nodeValue;
  43. }
  44. } else {
  45. document.getElementById('showtime').innerHTML = 'Error!';
  46. }
  47. }
  48. <meta name="generator" content="Namo WebEditor">
  49. <meta name="author" content="OnAjax.net">
  50. </head>
  51. <body onLoad="getServerTime();" bgcolor="white">
  52.  
  53. <h6>Getting the server time without page refresh</h6>
  54.  
  55. <input type="button" value="Refresh" onClick="getServerTime()">
  56. </form>
  57. <div id="showtime" class="displaybox">
  58.  
  59. <?php
  60. header('Content-Type: text/xml');
  61. echo "<?xml version=\"1.0\" ?><clock1><timenow>\" .date('H:i:s').\"</timenow></clock1></xml>";
  62. ?>
  63.  
  64. </div>
  65. </body>
  66. </html>
atomek4
Mi sie wydaje, ze podstawowy błąd jest taki, że przeglądarka dostaje raz nagłówek, że ma do czynienia raz z dokumentem html a potem raptem dostaje informacje, że jest dokumentem XML. Poza tym to wszystko masz w jednym pliku? Takie coś jak próbujesz zrobić jest tutaj z tym, że ajax odwołuje się do zewnętrznego pliku asp, ale to wystarczy tylko go zamienić na odpowiedni php

Trochę poprawiłem w pliku HTML tą funkcję:

  1. function useHttpResponse() {
  2. if (http.readyState == 4) {
  3. if(http.status == 200) {
  4.  
  5. document.getElementById('showtime').innerHTML = http.responseText;
  6. }
  7. } else {
  8. document.getElementById('showtime').innerHTML = 'Error!';
  9. }
  10. }


i oddzielny plik: gettime.php

  1. <?php
  2. echo date('H:i:s');
  3. ?>


Takie prostsze rzeczy lepiej odbierać jako tekst a nie tworzyć plik XML
skowron-line
pobieranie aktualnego czasu w ajaxie to chyba troche przesada to niemozna tego zrobic w JS?? po co co sekunde katowac serwer zeby wyciagnac aktualny czas... Jak dla mnie to lekka przesada
atomek4
@skowron-line: Tutaj chodzi o aspekt szkoleniowy smile.gif
hhg
dzieki za pomoc! tak to jest tylko w celach dydaktycznych
skowron-line
Cytat(atomek4 @ 15.07.2007, 17:38:03 ) *
@skowron-line: Tutaj chodzi o aspekt szkoleniowy smile.gif


szkolenie jak zakatowac serwer. hmmm
hhg
smile.gif chodzi o przyklad wykorzystania ajaxa, to byl najprostszy jaki znalazlem, ale juz sie troche polapalem co za co odpowiada wiec skuteczny
atomek4
Cytat(skowron-line @ 16.07.2007, 09:40:55 ) *
szkolenie jak zakatowac serwer. hmmm


Nie smile.gif Chyba raczej chodzi o to, ze pobierając aktualny czas za pomocą AJAXa masz możliwość zobaczyć, że php za każdym razem zwraca coś innego. Poza tym bez przesady bardzo podobny przykład jest na W3 Schools w dziale Ajax tutorial.
Zresztą skoro ktoś się bierze za AJAXa to chyba wie, że datę może pobrać sobie za pomocą JS. smile.gif
Ale to moje osobiste zdanie smile.gif

Żeby już nie nabijać sobie postów to zwróć uwagę, że autor tematu za każdym razem powtarza, że uczy się AJAXa a to, że akurat pobiera datę to przypadek bo akurat znalazł taki przykład. Myślę, że na podstawie tego przykładu już wie o co w ogóle chodzi z AJAXem. Wydaje mi się, podkreślam wydaje mi się, że ugryzienie samego AJAXa bez znajomości chociażby podstaw JS byłoby dość trudne.

Pozdrawiam
skowron-line
Cytat
Zresztą skoro ktoś się bierze za AJAXa to chyba wie, że datę może pobrać sobie za pomocą JS. smilingsmiley.gif


ja bym tego nie przyjmowal za pewnik
hhg
Cytat
ja bym tego nie przyjmowal za pewnik

przykladowy kod jest tutaj:
http://webmade.org/porady/data-js.php

jak czegoś nie będziesz wiedział to służe pomocą winksmiley.jpg
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.