ďťż
Podstrony
|
telcocafePrzy pomocy artykułu na stronie Mozilli utworzyłem prosty skrypt do obsługi AJAX (być może są błędy - dopiero go piszę).//AJAX function NewReq(type,url,co,errmsg) { http=false; if(window.XMLHttpRequest) { http=new XMLHttpRequest(); if(http.overrideMimeType) http.overrideMimeType('text/xml'); } //IE else if(window.ActiveXObject) { http=new ActiveXObject("Microsoft.XMLHTTP"); } if(!http) return false; if(type=='POST') http.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); http.onreadystatechange=Answer; http.open(type,url,true); http.send(co); } function Answer() { try { if(http.readyState==4) { if(http.status==200) { alert(http.responseText); } else { if(errmsg!=0) alert(errmsg); return false; } } } catch(e) { alert('Error: '+e.description); return false; } } Pozostało teraz dodać obsługę funkcji skryptów. Metody są różne. Jedną z nich jest możliwość przesłania kodu do funkcji (odpowiednik w PHP: eval) LUB nazwy funkcji jako argument NewReq. Rozwiązanie ma zalety (np. nie trzeba tworzyć wielu funkcji) jak i wady (dużo argumentów, itp.). W Javascript jest to prawdopodobnie niemożliwe. Chyba najlepszym rozwiązaniem jest utworzenie obiektu AJAX dla danego skryptu. Przykład (nie wiem, czy poprawny):obiekt = new NewReq(...); obiekt.Success = function() { ... }Jednak jeśli będzie korzystać z AJAX w tym samym czasie więcej modułów, prawdopodobnie się pogryzą. Możliwe jest więc przekazanie nazwy zmiennej obiektu (zamiast domyślnego http (który użyłem)) np. w argumencie NewReq()? Może jest lepsze rozwiązanie? nazwa = new NewReq() //W funkcji NewReq this.http=new XMLHttpRequest();Czy coś w tym stylu zapobiegnie konfliktom? Jak to poprawnie zrobić? Ciekawe jest też rozwiązanie, które stosuje AdvAJAX. Używa się znaku dwukropka. Chyba użyte jest słowo prototype w kodzie. W kursach nie ma o tym jednak zbyt wiele. |
|||
Sitedesign by AltusUmbrae. |