Jump to content
php.lv forumi

oop javascript


andrisp

Recommended Posts

Šodien mēģinu ielauzties "objektorientētā" javascript programmēšanā; cenšos izveidot ļoti vienkāršu Ajax klasi, izmantojot Mozilla Developer Center tutoriāli (http://developer.mozilla.org/en/docs/AJAX:Getting_Started), bet nekādi nesanāk.

 

Šeit ir kods.

 

Problēma ir 44 rindiņā.

 

FF konsole saka "this.fetch is not a function", kautgan kā jau kodā var redzēt, ka ir gan (typeof this.fetch atgriež function)

 

Mēģināju izveidot kautko vienkāršāku, bet līdzīgu tam kodam, un tas strādā:

function x() {

this.z = 'test';

this.y = function() { this.show(); }

this.show = function() {
	alert(this.z);
}

}

x = new x();
x.y();

Link to comment
Share on other sites

vnk sanāk tā, ka http_request ir cits objekts, kuram nav tā f-ja fetch, jo this norāda uz XHTTPRequest nevis uz tavu klases instanci. Un vispār onreadystatevchange tiek izsaukta kā "statiskā" f-ja, kurai nav ne owners, ne propertijs (izdrukā alert(this); )

Edited by Delfins
Link to comment
Share on other sites

Labāk netaisīt browseru pārbaudi ar document.all, jo Opera arī atbalsta to.

 

Labāk šādi:

 

if (window.XMLHttpRequest) {

	xmlDoc = new XMLHttpRequest();
	if (xmlDoc.overrideMimeType) {
		xmlDoc.overrideMimeType('text/xml');
	}

} else if (window.ActiveXObject) { // IE

	try {
		xmlDoc = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {}
	}

}

Link to comment
Share on other sites

Vēl var iztikt arī bez eval izmantošanas.

 

Pietiek, ja sendRPC fjai callback fju nosaukumus nosūta bez pēdiņām (tātad kā references laikam), un pēc tam vienkārši izsauc callbackFunc(xmlDoc);

 

To gan netestēju kārtīgi, bet izskatās, ka jaunākās FF, IE un Opera versijas atbalsta to.

Link to comment
Share on other sites

Ar pašu ajax pieprasījumu esmu ticis skaidrībā, bet tagad nekādīgi nespēju izdomāt, kā lai norealizē, kad forma tiek submitēta (cenšos izveidot formu validāciju), tad tiek izsaukta speciāla funkcija (piem., check_form();, tai padodot referenci uz formu), kas izveido ajax pieprasījumu un pēc ajax rezultāta atgriešanas pārbauda, vai vajadzīgās pārbaudes ir veiksmīgas.

 

Problēmas:

1. Kā lai apstādina check_form() funkcijas izpildi kamēr nav atgriezts rezultāts no ajax pieprasījuma ?

2. Kā lai atgriež ajax rezultātu uz šo check_form() fju ? (Varētu, izmantojot globālos mainīgos)

 

Varbūt varat uzskicēt kādu pseido kodu, lai izprastu risinājuma būtību ?

Link to comment
Share on other sites

×
×
  • Create New...