ugrás a tartalomhoz

Javascript értékátadás

blal · 2010. Dec. 29. (Sze), 21.05
Kissé fura lehet a problémám, és kapásból nehéz is jó leírást adjak róla, ezért előre is sry.

Egy ideje már foglalkozok ajax-os oldalakkal, és valahogy mindíg megkerültem a dolgot, de most úgy döntöttem szembenézek vele, írok már magamnak végre egy ajax metódust (meg hát igazából osztályt), amit bármikor használhatok. Szép és jó minden, csak mikor megérkezik a szerverről a válasz, akkor nem tudom kiizzadtatni vele ugyanis egy ilyen:
  1. ajax.state.finish.ok = function(){  
  2.     alert(ajax.resp_text);  
  3. }  
felüldefiniálással értelemszerűen nem jelenít meg semmit az alert. Ide viszont később komolyabb eljárások kerülnének, szóval ezt a módot szeretném használni.

így néz ki az osztály:
  1. var ajax = {  
  2.     req_mode : "post",  
  3.     resp_text : "",  
  4.     br_supp : function(){ alert("Ez a böngésző nem támogatja az ajaxot."); },  
  5.     wr_path : function(){ alert("Szerver oldali alkalmazás nem elérhető. Vegye fel a kapcsolatot az adminisztrátorral."); },  
  6.     state : {  
  7.         finish : {  
  8.             ok    : function(){ alert("Az adatokat sikeresen feldolgoztuk!"); },  
  9.             notok : function(){ alert("Hiba a feldolgozás során!"); }  
  10.         }  
  11.     },  
  12.   
  13.     request : function(url, params){  
  14.         var xmlHttp;  
  15.         try{  
  16.             // Firefox, Opera 8.0+, Safari  
  17.             xmlHttp=new XMLHttpRequest();  
  18.         }catch (e){  
  19.             // Internet Explorer  
  20.             try{  
  21.                 xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");  
  22.             }catch (e){  
  23.                 try{  
  24.                     xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");  
  25.                 }catch (e){  
  26.                     this.br_supp();  
  27.                     return false;  
  28.                 }  
  29.             }  
  30.         }  
  31.         xmlHttp.onreadystatechange=function(){  
  32.             if(xmlHttp.readyState==4){  
  33.                 this.resp_text = xmlHttp.responseText;  
  34.                 alert(this.resp_text);    
  35.                 ajax.state.finish.ok();// TODO ?? this. -re ??  
  36.             }  
  37.         }  
  38.         try{  
  39.             if((this.req_mode.toUpperCase())=="POST"){  
  40.                 xmlHttp.open("POST", url, true);  
  41.                 xmlHttp.setRequestHeader("Content-type""application/x-www-form-urlencoded");  
  42.                 xmlHttp.send(params);  
  43.             }  
  44.             else{  
  45.                 xmlHttp.open("GET", url + "?" + params,true);  
  46.                 xmlHttp.setRequestHeader("Content-type""application/x-www-form-urlencoded");  
  47.                 xmlHttp.send(null);  
  48.             }  
  49.         }catch(e){  
  50. //          this.wr_path();  
  51.             alert(e);  
  52.         }  
  53.     }  
És végül a kérdés: Meg leget-e ezt oldani valami féle "kései értékátadással".
(Elnézést a hülye kérdésért, de ez egy kisebb része egy nagy egésznek... már be vagyok fáradva, valsz a szememtől nem látok)
 
1

Miért kell neked egy saját

rrd · 2010. Dec. 29. (Sze), 22.03
Miért kell neked egy saját osztály? Ott vannak erre jó keretrendszerek mint a prototype, jquery, amik szépen megoldják a problémáidat és kapsz egy rugalmas és karbantartott eszközt a kezedbe.
Persze ha mindenképpen sajátot szeretnél akkor még mindig megnézheted, hogy hogyan csinálják ezek.
2

:) köszi, utánanézek...

blal · 2010. Dec. 29. (Sze), 22.41
:) köszi, utánanézek...