Jump to content
php.lv forumi

Recommended Posts

Posted

Š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();

Posted (edited)

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
Posted

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) {}
	}

}

Posted

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.

Posted

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 ?

×
×
  • Create New...