AJAX med jQuery
Eksempel 1
Et enkelt eksempel på henting av tekst.
Javascriptkoden er slik
function getIt1(address,targetNodeId){ $.ajax({ url:address, success:function(data) { $('#'+targetNodeId).html(data); // or: // document.getElementById(targetNodeId).innerHTML=data; }, error:function(data) { $('#'+targetNodeId).html('error'); } }); }
og bruken er slik:
<p class="clickable" onclick="getIt1('frej1.txt','case1')">Hent det hit</p>
Hvis du ser på funksjonen getIt() over så er strukturen slik:
function getIt(a,b){ $.ajax( obj ); }
eller om vi vil:
function getIt(a,b){ jQuery.ajax( obj ); }
Vi kaller altså funksjonen ajax med et objekt som parameter. Hvilke egenskaper dette objektet kan ha er beskrevet i jQuery-dokumentasjonen. I dette tilfellet bruker url, som sier hvor vi skal hente data og vi angir hvilke funksjoner som skal kalles når ting går bra, success, og galt, error. Alle andre mulige egenskaper er satt til det som jQuery har definert som default.
Eksempelet overfor kunne vi også ha løst slik:
<button class="demobutton" onclick="$('#case11').load('frej1.txt');">Test dette</button>
Eksempel 2
Et enkelt eksempel på henting av headere.
Javascriptkoden er slik
function getIt2(address,targetNodeId){ $.ajax({ url:address, type:'GET', success:function(data,status,xhr) { var T=xhr.getAllResponseHeaders(); $('#'+targetNodeId).html('<pre>'+T+'</pre>'); }, error:function(data) {$('#'+targetNodeId).html("Could not access content")} }); }
og bruken er slik:
<button class="demobutton" onclick="getIt2('frej1.txt','case2')">getIt2('frej1.txt','case2')</button>
Eksempel 3
Et enkelt eksempel på ekspand/unexpand.
Javascriptkoden er slik
function doExpand(address,targetNodeId){ $.ajax({ url:address, type:'POST', success:function(data,status,xhr) { var T=xhr.responseText; T='<span class="wxtexpand" '+'onclick="doUnExpand(\''+address+'\',\''+ targetNodeId+'\')"><span class="on"> </span></span>'+T; $('#'+targetNodeId).html(T); }, error:function(data) {$('#'+targetNodeId).html("Could not access content")} }); } function doUnExpand(address,targetNodeId){ T='<span class="wxtexpand" '+'onclick="doExpand(\''+address+'\',\''+ targetNodeId+'\');"><span class="off"> </span></span>'; $('#'+targetNodeId).html(T); }
og bruken er slik:
<div id="case3"> <span class="wxtexpand" onclick="doExpand('frej1.txt','case3');"> <span class="off"> </span> </span> </div>
De to CSS-klassene on og off er definert med bakgrunnsbilder.
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="$('#thecard').load('mycard.txt');"/> </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="bs8.gif" 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:
$('#thecard').load('mycard.py?lang=en');
Det er en slik framgangsmåte som er brukt på visittkortene nederst på sidene i dette materialet.
Eksempel 5
Parametere fra en form.
Javascriptkoden er slik
function goGetShakespeare(frm,targetNodeId){ var nr=parseInt(frm.nr.value); if( (isNaN(nr)) || (nr < 1) ||(nr > 158)) nr=18; // use as default var params='sonette_num='+nr; $.ajax({ url:'https://borres.hiof.no/wep/js/ajax/demo6/shakereturn.py', data:params, success:function(data) { $('#'+targetNodeId).html(data); }, error:function(data) { $('#'+targetNodeId).html('error'); } }); return false; }