AJAX
prototype.js
Børre Stenseth
Moduler>AJAX>Generelt>Kodestrategier>Prototype

Bruk av prototype.js

Hva
Noen eksempler på bruk av prototype-biblioteket

JavaScript- biblioteket prototype [1] er et annet greitt bibliotek for flere formål. Det er godt dokumentert på hjemmesidene. Her skal vi bare se på noen eksempler på bruk av prototype i forbindelse med AJAX.

Eksempel 1

Et enkelt eksempel på henting av tekst.

Hent det hit

Javascriptkoden er slik

function getIt1(address,targetNodeId){
    new Ajax.Request(address,
        {method:'get',
         onSuccess:function(transport){
            var T=transport.responseText;
            $(targetNodeId).update(T);
         },
         onFailure:function(){$(targetNodeId).update("Could not access content")}
         });
}

og bruken er slik:

<p class="clickable" onclick="getIt1('frej1.txt','case1')">Hent det hit</p>

Vi kunne også ha gjort det slik, altså uten en egen javascriptfil:

<p class="clickable" 
    onclick="javascript:new Ajax.Updater('case11','frej1.txt', {method:'get'});">
	Test dette
</p>

Test dette

Eksempel 2

Et enkelt eksempel på henting av headere.

Hent headers

Javascriptkoden er slik

function getIt2(address,targetNodeId){
    new Ajax.Request(address,
        {method:'get',
         onSuccess:function(transport){
            var T=transport.getAllHeaders();
            $(targetNodeId).update('<pre>'+T+'</pre>');
         },
         onFailure:function(){$(targetNodeId).update("Could not access content")}
         });
}

og bruken er slik:

<p class="clickable" onclick="getIt2('frej1.txt','case2')">Hent headers</p>

Eksempel 3

Et enkelt eksempel på ekspand/unexpand.

Javascriptkoden er slik

function doExpand(address,targetNodeId){
    new Ajax.Request(address,
         {method:'post',
            onSuccess:function(transport){
            var T=transport.responseText;
            T='<span class="wxtexpand" '+'onclick="doUnExpand(\''+address+'\',\''+
                targetNodeId+'\')"><span class="on"> </span></span>'+T;
            $(targetNodeId).update(T);
          },
          onFailure:function(){$(targetNodeId).update("Could not access content")}
         });
}
function doUnExpand(address,targetNodeId){
    T='<span class="wxtexpand" '+'onclick="doExpand(\''+address+'\',\''+
       targetNodeId+'\');"><span class="off"> </span></span>';
    $(targetNodeId).update(T);
}

og bruken er slik:


<div id="case3">
 <span class="expand" onclick="doExpand('frej1.txt','case3');">
   <span class="on">+</span>
 </span>
</div>


Eksempel 4

En nyttig og svært enkel anvendelse er "visittkort". Vi ønsker kanskje å skjule epostadressen vår eller vi ønsker ikke å overbelaste siden med kontaktinformasjon. En enkel måte å gjøre dette på er å hente kontaktinformasjon ved et AJAX oppslag:

Knappen er ganske enkelt skrevet slik:


<div id="thecard">
<input type="button" 
       value="Kontakt" 
       onclick="javascript:new Ajax.Updater('thecard','mycard.txt', {method:'get'});"/>
</div>

og det vi henter inn ser slik ut:

<div style="font-family:geneva;font-size:11px;border:solid;border-width:thin;
            width:235px;padding:4px;background-color:#F7F7F7">
    <img src="http://www.ia.hiof.no/~borres/self/bs1.png" 
         style="float:left;margin-right:4px" alt="bs"/>
    Me
    <br/>workplace
    <br/>job: (47) 55 55 55 
    <br/>mob: (47) 55 55 55
    <br/>my.mail@somewhere.no
</div>

Det er selvsagt ikke noe i veien for at vi kan bruke et Pythonskript som URL i stedet for 'mycard.txt' slik at vi eventuelt kan sende med parametere og få en tilpasset tilbaemelding. F.eks. slik:

new Ajax.Updater('thecard','host/cgi/mycard.py',{method:'get',parameters:'lang=en'});

Det er en slik framgangsmåte som er brukt på visittkortene nederst på sidene i dette materialet.

Referanser
  1. prototype Javascript bibliotekprototypejs.orgwww.prototypejs.org/14-03-2010
Vedlikehold

B.Stenseth, juli 2009

(Velkommen) Moduler>AJAX>Generelt>Kodestrategier>Prototype (JQuery)