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:

ajax.state.finish.ok = function(){
	alert(ajax.resp_text);
}
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:

var ajax = {
	req_mode : "post",
	resp_text : "",
	br_supp : function(){ alert("Ez a böngésző nem támogatja az ajaxot."); },
	wr_path : function(){ alert("Szerver oldali alkalmazás nem elérhető. Vegye fel a kapcsolatot az adminisztrátorral."); },
	state : {
		finish : {
			ok    : function(){ alert("Az adatokat sikeresen feldolgoztuk!"); },
			notok : function(){ alert("Hiba a feldolgozás során!"); }
		}
	},

	request : function(url, params){
		var xmlHttp;
		try{
			// Firefox, Opera 8.0+, Safari
			xmlHttp=new XMLHttpRequest();
		}catch (e){
			// Internet Explorer
			try{
				xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
			}catch (e){
				try{
					xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
				}catch (e){
					this.br_supp();
					return false;
				}
			}
		}
		xmlHttp.onreadystatechange=function(){
			if(xmlHttp.readyState==4){
				this.resp_text = xmlHttp.responseText;
				alert(this.resp_text);  
				ajax.state.finish.ok();// TODO ?? this. -re ??
			}
		}
		try{
			if((this.req_mode.toUpperCase())=="POST"){
				xmlHttp.open("POST", url, true);
				xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				xmlHttp.send(params);
			}
			else{
				xmlHttp.open("GET", url + "?" + params,true);
				xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				xmlHttp.send(null);
			}
		}catch(e){
//			this.wr_path();
			alert(e);
		}
	}
É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...