Dataene vi bruker her ser slik ut:
land som csv
Den komplette adressen er: https://borres.hiof.no/wep/data/geografi/land.txt
Feltene er skilt med tabulator, og feltene er:
2 bokstavers kode standardisert av ISO
3 bokstavers kode standardisert av ISO
tallkode kode standardisert av ISO
fips code, identifikasjon fra en annen standard (fips)
landets navn på engelsk
hovestadens navn på engelsk
arealet i km2
befolkning
verdensdel, EU, AS, NA, AF, AN, SA, OC
språk, nærmere forklart på geonames
mynt
ID for denne geografiske enheten i geonames database
Vi skal gjøre dette enkelt og ønsker rett og slett og lage en liste med
navnene på landene i fila. Vi gjør det med en "håndskrevet" AJAX-request og ved hjelp av jQuery.
Basis AJAX
Javascript-koden blir slik:
_script1.js
var myRequest=null;
var url="https://borres.hiof.no/wep/data/geografi/land.txt";
function startXMLHttpRequest()
{
myRequest = new XMLHttpRequest();
if (myRequest) {
myRequest.onreadystatechange = processRequestChange;
myRequest.open("GET", url, true);
myRequest.send(null);
}
else{
alert("Nettleseren henger ikke med");
}
}
function processRequestChange()
{
// if the request is complete and successfull
if (myRequest.readyState == 4) {
if ((myRequest.status == 200) || (myRequest.status == 304))
{
useText(myRequest.responseText);
}
else
alert("Problem med tilgang til data:\n" + myRequest.statusText);
}
}
function useText(T){
// accumulate the result here
var result="";
// split on lines
var lines= T.split("\n");
// walk lines
for(var i=0;i < lines.length;i++){
// correct nof elements ?, should be 12
var pieces=lines[i].split("\t");
if( pieces.length != 12){
// drop it and report it
console.log(pieces)
}
else{
//(probably) ok
// but some entries is not a country, drop these
if(pieces[4].length >0)
result+="<li>"+pieces[4]+"</li>";
}
}
elt=document.getElementById("dump1");
elt.innerHTML='<ul>'+result+'</ul>';
}
function getIt(address){
$.ajax({
url:"https://borres.hiof.no/wep/data/geografi/land.txt",
success:function(data)
{
useIt(data)
},
error:function(data)
{
document.getElementById("dump2").innerHTML=data.status;
console.log(data);
}
});
}
function useIt(T){
// accumulate the result here
var result="";
// split on lines
var lines= T.split("\n");
// walk lines
for(var i=0;i < lines.length;i++){
// correct nof elements ?, should be 12
var pieces=lines[i].split("\t");
if( pieces.length != 12){
// drop it and report it
console.log(pieces)
}
else{
//(probably) ok
// but some entries is not a country, drop these
if(pieces[4].length >0)
result+="<li>"+pieces[4]+"</li>";
}
}
elt=document.getElementById("dump2");
elt.innerHTML='<ul>'+result+'</ul>';
}