Sākumlapa › Forumi › Notepad.lv › IT ziņas › Raksti › Kā veidot dinamiskas web lappuses: AJAX
Ir vairāki veidi, kā web lapu padarīt dinamisku. Viens no modernākajiem variantiem ir lietot AJAX piedāvātās tehnoloģijas, kur kods (jeb skripts) pieprasa informāciju no servera un pēc tam to parāda lapā lietotājiem saprotamā veidā. Ar AJAX veidotās web lapas ir labāk pārskatāmas, vieglāk uzbūvētas struktūras ziņā. Tagad visu informāciju vairs nav nepieciešams glabāt vienā failā, bet to var izvietot arī citur, un ar Ajax palīdzību nolasīt un salikt kopā. Š āds moduļu struktūras veids palīdz ērti pārvaldīt web lapas failus, jo labojamo informāciju vairs nevajadzētu meklēt vienā lielā “rullī”, bet katram informācijas blokam būtu savs neatkarīgs fails.
Apskatīšu vienu no visvienkāršākajiem viediem, kā web lapu padarīt dzīvāku.
AJAX tabs, jeb vienkāršā valodā – dinamiskie lauki, jeb tabulas.
AJAX tabs ir veidots balstoties uz AJAX tehnoloģijām, kuras jau pieminēju. Š is kods, jeb scripts ir veidots ļoti vienkārši, lai esošajiem un potenciālajiem lietotājiem nerastos problēmas ar darbības izprašanu. Ar šo scriptu Jūs variet DIV ielādēt informāciju no cita faila, variet mainīt paša scripta vizuālos uzstādījumus (CSS)
Zemāk ir fragments no AJAX mājaslapas, kurā parādīts neliels demo panelis:
Kā redzam Tab1; Tab2 ; Tab3; Tab4 satur noteiktu informāciju par failu, kurš būtu jāielādē konkrētajā vietā.
Kā jau minēju AJAX TABS ir samērā viegls, tāpēc ķeršos pie nākošās metodes.
Lejupielādējam nākošo piemēru šeit:
Prototype JS
Prototype JS ir Ajax karkass (framework), jeb tautā sauktais rāmis. Ar Prototype JS palīdzību Jūs variet iegūt līdzīgu efektu kā ar AJAX tabs, taču šeit ir neliela atšķirība. Lieta ir tāda, ka Prototype JS piedāvā vairākas uz AJAX tehnoloģijām balstītas iespējas. Š oreiz es apskatīšu tikai divas no tām un tas būtu:
1. Ajax.Updater, jeb atjaunošana, parādīšana un otra-
2. Ajax.PeriodicalUpdater, jeb automātiskā atjaunošana, noteiktā laika intervālā informācija tiek atjaunota un ielādēta DIV’ā.
AJAX.Updater
Ajax.Updater Jūs variet ērti izmantot tādos gadījumos, ja Jums vajag jau esošā lapā iekļaut kādu citu failu. Parasti php to sauc par include, bet ir reizes, kad include neder, tad var izlīdzēties ar Ajax.Updater. Ar Ajax.Updater informācija tiek pieprasīta no faila un parādīta noteiktā DIV’ā, netiek veikta otreizēja atjaunošana.
Piemērs:
new Ajax.Updater('div_aile', 'iekl.html',
{
method: 'get',
});
Ajax.PeriodicalUpdater
Ajax.PeriodicalUpdater veic atkārtotu informācijas atjaunošanu noteiktā laika intervālā. Ja vēlamies izmantot šo iespēju, tad parasti ieteicams intervālu uzlikt ap minūti-divām, tas viss ir atkarīgs no tā, kāda Jums ir vajadzība. Ja vajag atjaunot online lietotāju sarakstu, tad pilnīgi pietiek ar minūti, bet ja piem. jaunākos foruma komentārus – tad šo laiku var būt lietderīgi arī samazināt.
Jāpiebilst, ka ar Ajax.PeriodicalUpdater ir jābūt uzmanīgiem. Ja gribēsiet atjaunot ik pārdesmit sekundes informāciju no kāda palielāka faila, tad web lapa var sākt raustīties, būs tāda sajūta, ka viss dators paliek ļoti lēns. Iemesls ir tāds, ka ar Ajax.PeriodicalUpdater tiek pieprasīta visa faila atjaunošana teiksim, reizi 10 sekundēs. Kas notiks, ja fails būs ļoti liels? Interneta pārlūks nespēs to laicīgi “sagremot”. Bet ja sistēmu uztaisa gudrāku, lai tā pieprasa vairākus ierakstus no datubāzes, tad problēmām nevajadzētu būt. Š o atsevišķo ierakstu jeb moduļu izmērs būtu vien pāris KB vai pat mazāk.
Piemērs:
new Ajax.PeriodicalUpdater('div_aile', '/some_url', // div_aile bloks kurā ielādēs /some_url
failu
{
method: 'get',
insertion: Insertion.Top,
frequency: 1, // intervāls sekundēs
decay: 2 // intervāla dubultošana
});
Sīkāk par šiem paņēmieniem lasām mājaslapā:
Š is bija tikai neliels ieskats, kā web lapu padarīt dinamiskāku. Ir vēl ļoti daudz paņēmienu bez šiem. Tagad vismaz būs jāaizmirst par tādām novecojušām lietām, kā meta refresh. Protams, vienmēr arī jāizvērtē konkrēto vajadzību. Jāatceras, ka AJAX nav brīnumlīdzeklis. Ir gadījumi, kad šīs tehnoloģijas nav lietojamas.
Tā gluži nav patiesība.
Ir nevis bloķēts AJAX vai JS , bet gan ActiveX, kas vienmēr ir izcēlies ar caurumainību.
Un iekš IE6 (vo tiešām nezināšu par IE7), XHR ojekts atridas iekš ActiveX kontrolēm.
Tā kaut kā.
[img]
error: uncaught exception: [Exception… “Component returned failure code: 0x804b000f [nsIXMLHttpRequest.setRequestHeader]” nsresult: “0x804b000f (
visu ko es esmu taisiijis peec vairaakiem klikshkiem shitaadus errorus met…
Es saprotu ka tas oranžais bumbulis pie logo var būt maldinoš, bet šis portāls nesaucas https://kristāla.bumba.lv
Bez ejoša
Anyway. Manas tarot kārtis saka, ka vaina ir konfliktējošos moduļos, kas abi izmanto XHR.
Neliela pielilde par prototypeJS libu.
Iesaku to tomēr apiet. Vismaz līdz restrukturizācijai.
Tam libam ir pārāk daudz problēmu:
tiek palašinātas esošās klases .. piem Object.getElementsByClassName
nav modulārs
Iesaku labāk mēģināt MooTools vai jQuery.
Preses relīzes