Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Skrypt]Mój skrypt ajaxu
Forum PHP.pl > Inne > Oceny
daniel1302
Witam, oto mój skrypt ajaxu. Trochę zgapiłem z adv ale jeśli coś podglądam to muszę to rozgryźć więc JS umie dużo więcej.

  1. /* Nowy obiekt HttpRequest */
  2. function getXMLHttpRequest ()
  3. {
  4.      var request = false;
  5.      try
  6.      {
  7.            /* Próba dla FF > 2/OPERA > 9/IE>7 */
  8.            request = new XMLHttpRequest();
  9.            request.overrideMimeType('text/xml');
  10.      }
  11.      catch (error1)
  12.      {
  13.            try
  14.            {
  15.                  /* Próba dla IE6 */
  16.                  request = new ActiveXObject('Msxml2.XMLHTTP');
  17.            }
  18.            catch (error2)
  19.            {
  20.                  try
  21.                  {
  22.                        /* Próba dla IE 5 */
  23.                        request = new ActiveXObject('Microsoft.XMLHTTP');
  24.                  }
  25.                  catch (error3)
  26.                  {
  27.                        request = false;
  28.                  }
  29.            }
  30.      }
  31.      return request;
  32. }
  33.  
  34. req = getXMLHttpRequest (); //Stwóż obiekt HttpRequest
  35.  
  36. /* Obiekt jądra */
  37. var obj =
  38. {
  39.      url : null,
  40.      onInitialization : null, //Rozpoczynam Ładowanie
  41.      onLoading : null, //Ładuje
  42.      onLoaded :null, //Załadowano
  43.      onError : null, //Błąd
  44.      onComplete : null, //Odebrano
  45.      onSucces : null, //Zakończono      
  46.      onInitializationHandled : false, //Rozpoczynam Ładowanie- WYkonano
  47.      onLoadingHandled : false, //Ładuje- Wkonano
  48.      onLoadedHandled : false, //Załadowano- Wkonano
  49.      onCompleteHandled : false, //Odebrano- Wkonano
  50.      onSuccesHandled : false //Zakończono- Wkonano
  51. }
  52.  
  53. //Monitoruj stan
  54. obj.onProgress = function ()
  55. {
  56.      obj._onInitialization();
  57.      switch (req.readyState)      {
  58.            case 1: obj._onLoading(); break;
  59.            case 2: obj._onLoaded(); break;
  60.            case 3: obj._onComplete(); break;
  61.            case 4: obj._onSucces(); break;
  62.      }
  63. };
  64.  
  65. //Inicjacja
  66. obj._onInitialization = function ()
  67. {
  68.      if (obj.onInitializationHandled == true)
  69.            return;
  70.            obj.onInitializationHandled = true;
  71.      obj.registerEvent('Initialization', req);
  72.      
  73. };
  74.  
  75. //Ładowanie
  76. obj._onLoading = function ()
  77. {
  78.      if (obj.onLoadingHandled == true)
  79.            return;
  80.      obj.registerEvent('Loading', req);
  81.      obj.onLoadingHandled = true;
  82. };
  83.  
  84. //Załadowane
  85. obj._onLoaded = function ()
  86. {
  87.      if (obj.onLoadedHandled == true)
  88.            return;
  89.      obj.registerEvent('Loaded', req);
  90.      obj.onLoadedHandled = true;
  91. };
  92.  
  93. //Zakończono
  94. obj._onComplete = function()
  95. {
  96.      if (obj.onCompleteHandled == true)
  97.            return;
  98.      obj.registerEvent('Complete', req);
  99.      obj.onCompleteHandled = true;
  100. };
  101.  
  102. obj._onSucces = function ()
  103. {
  104.      if (obj.onSuccesHandled == true)
  105.            return;
  106.      if (req.status == 200)
  107.            obj.registerEvent('Succes', req);
  108.      else
  109.            obj.registerEvent('Error', req);
  110. };
  111.  
  112. //Zarejestruj zdarzenie
  113. obj.registerEvent = function (event)
  114. {
  115.      args = new Array();
  116.      if (typeof obj != 'object')
  117.            return;
  118.      if (typeof obj['on'+event] != 'function')
  119.            return;
  120.      for (i=1; i<arguments.length; i++)
  121.            args.push(arguments[i]);
  122.      obj['on'+event].apply(null, args);
  123. };
  124.  
  125. /* Obiekt myAjax*/
  126. myAjax = new Object();
  127. myAjax.get = function (arguments)
  128. {
  129.      return myAjax.getResult('GET', arguments);
  130. };
  131.  
  132. /* Zwróć wynik */
  133. myAjax.getResult = function(method, arguments)
  134. {
  135.      //Sprawdz metodę odwołania
  136.      if (typeof method == 'undefined' || method == null)
  137.            method = 'GET';
  138.      //Sprawdz czy obekt XMLHttpRequest został skasowany jeśli nie to skasuj
  139.      if (req != null)
  140.      {
  141.            delete req.onreadystatechange;
  142.            req = null;            
  143.      }
  144.      req = getXMLHttpRequest();
  145.      //Sprawdz czy można utwożyć obiekt jeśli tak to stwórz a jeśli nie to zwróć pusty wynik
  146.      if (req == null)
  147.            return null;
  148.      //Sprawdz obiekt jądra
  149.      if (obj == null)
  150.            return null;
  151.      //Przypisz argumenty
  152.      myAjax.setArguments(arguments);
  153.      //Sprawdz link
  154.      if (obj.url == null || typeof obj.url == 'undefined')
  155.            alert('daniel123');
  156.      //Moitoruj stan
  157.      req.onreadystatechange = function () { obj.onProgress(); }
  158.      //Nadaj wartości domyślne
  159.      obj.onInitializationHandled =
  160.            obj.onLoadingHandled =
  161.                  obj.onLoadedHandled =
  162.                        obj.onCompleteHandled =
  163.                              obj.onSuccesHandled = false;
  164.      //Pobierz plik
  165.      req.open("GET", obj.url);
  166.      req.send(null);
  167.      
  168.            
  169.      
  170. };
  171. /* Przypisz arguenty */
  172. myAjax.setArguments = function(arguments)
  173. {
  174.      for (var a in arguments)
  175.      {
  176.                  obj[a] = arguments[a];
  177.      }
  178. };


  1. <script type="text/javascript" src="ajax.js"></script>
  2. <script type="text/javascript">
  3. //<![CDATA[
  4. function test()
  5. {
  6.      document.getElementById('myj');
  7.      myAjax.get({
  8.            url : 'data.php',
  9.            onInitialization: function(obj) {element.innerHTML = 'Inicjacja';},
  10.            onLoading: function(obj) {element.innerHTML = 'Ładowanie';},
  11.            onLoaded: function(obj) {element.innerHTML = 'Załadowano';},
  12.            onComplete: function(obj) {element.innerHTML = 'Odebrano';},
  13.            onSucces: function(obj) {element.innerHTML = obj.responseText;},
  14.            onError: function(obj) {element.innerHTML = 'Napotkano błąd: '+obj.status;}
  15.      });
  16. }
  17.  
  18. //]]>
  19. </script>
  20. <div id="myj">Hehehehehehe</div>
  21. <input type="submit" value="Kliknij i sprawdz" onClick="test()">

Dziękuje za ocene
Ziele
Skrypt Ajaxu? Są skrypty w ajaxie, a nie ajaxu..
Mógłbyś przynajmniej napisać do czego ten skrypt służy itp.. Wystawiasz gotowy "zgapiony" kod i żądasz oceny?
SHiP
@Ziele: imho czepisasz sie debilnych szczegółów. Równie dobrze mogł napisać skrypt dla sprzątaczy łazienkowych. Każdy by zrozumiał. Poza tym odrazu widać o co w skrypcie chodzi

A teraz ocena winksmiley.jpg

@daniel1302: Ogólnie dobra robota ale można to sporo zoptymalizować. Zamiast tworzyć n zmiennych i n funkcji ktore roznią sie jedynie jednym stringiem (np "Loading" i "Loaded") lepiej zrobić tablicę i funkcje domyslne. Łatwiej tez bedzie nowe akcje dodawać. I w przykladzie chyba powino byc:
Kod
var element = document.getElementById('myj');

albo to jakis skrót js o ktorym nie wiedzialem (nie testowalem kodu u siebie)
smile.gif Tak trzymac. Powodzenia w dalszym kodowaniu.
piotrooo89
Cytat(Ziele @ 5.07.2008, 16:09:16 ) *
Mógłbyś przynajmniej napisać do czego ten skrypt służy itp.. Wystawiasz gotowy "zgapiony" kod i żądasz oceny?


normalnie mnie aż trzepie jak słyszę coś takiego... sory nie dam oceny ale muszę to powiedzieć. kilka dni temu ty wystawiłeś stronkę do oceny w której jota w jote był szablon i promowałeś ją tekstem zrobiłem sam, po czym jak doszli do tego że to jest jakiś gotowiec zmieniłeś front i mówiłeś: dużo pozmieniałem... więc kto jak kto ale ty nie masz prawa - przynajmniej w mojej ocenie - mówić coś w stylu: zgapiony... to tyle skryptu nie ocenie bo nie chce mi się analizować.
Luciano
Nic ciekawego do oceny.. po pierwsze nie wnosisz nic nowego (takich skryptow od groma jest) po drugie twoj nie potrafi nic ciekawego w sensie bardzo podstawowa funkcinalnosc i kazdy jest w stanie zgapic/napisac podobny w 20min.
AjaxSrajax
hej,

A co z przykładem dla obj.responseXML? biggrin.gif Taki żarcik. Ja nie lubię innerHTML, wolę DOM:D, ale to nie kod skryptu...

Co z przesyłaniem metodą POST?
Teraz funkcja() test zaczyna się chyba bez sensu?.. nie zgubiles gdzieś :
var element=....?
albo mi coś monitor szwankuje winksmiley.jpg

pozdro
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-2024 Invision Power Services, Inc.