Avatar billede milpoer Nybegynder
04. marts 2010 - 21:05 Der er 11 kommentarer og
1 løsning

Indlæs info til array fra XMLhttpRequest..

Hej,

Jeg sidder og leger med lidt javascript til en lille iPhone app.. Men jeg kan ikke få min data læst ind i et array. Måske i kan hjælpe.

Jeg gør det sådan her:

var persons = [];
var oRequest = new XMLHttpRequest();
var sURL  = "http://www.domain.tld/data.txt";

oRequest.open("GET",sURL,false);
oRequest.setRequestHeader("User-Agent",navigator.userAgent);
oRequest.send(null)

if (oRequest.status!=200) {
    alert("Error executing XMLHttpRequest call!");
}

//alert(persons);

function processResponse(response) {
    people = response.responseText.split("\n");
    persons = people;
}

Data'en jeg forsøger læse ind har følgende form:

{ name: "Zebra Wild", location: "Junglen - Afrika", phone: "no phone", email: "no e-mail", image: "" },
{ name: "Lion Wild", location: "Junglen - Afrika", phone: "no phone", email: "no e-mail", image: "" },

osv.

Nogle hints så jeg kan få min response.responseText.split("\n"); til at smide det i persons array'et så det kan bruges direkte.. ???

/Tomas
Avatar billede majbom Novice
04. marts 2010 - 21:13 #1
prøv at se om ikke dette kan hjælpe dig lidt på vej: http://www.json.org/js.html
Avatar billede milpoer Nybegynder
04. marts 2010 - 21:29 #2
Synes ikke lige det giver menig i forhold til hvad jeg spurgte om =) måske bare mig..
Avatar billede majbom Novice
04. marts 2010 - 21:36 #3
det du modtager fra din server via ajax:

{ name: "Zebra Wild", location: "Junglen - Afrika", phone: "no phone", email: "no e-mail", image: "" },
{ name: "Lion Wild", location: "Junglen - Afrika", phone: "no phone", email: "no e-mail", image: "" },


er json (en måde at formattere data på så det kan sendes i en streng)

det du modtager er et multidimensionelt array:


array(
  array(
      name: "Zebra Wild",
      location: "Junglen - Afrika",
      phone: "no phone",
      email: "no e-mail",
      image: ""
  ),
  array(
      name: "Lion Wild",
      location: "Junglen - Afrika",
      phone: "no phone",
      email: "no e-mail",
      image: ""
  )
);
Avatar billede majbom Novice
04. marts 2010 - 21:37 #4
med en json parser kan du få det "lavet" til et array ud fra den streng du modtager.
Avatar billede tjens Nybegynder
04. marts 2010 - 21:49 #5
Bortset fra at det er usikkert ved hacking/virus kan man danne sin json variabel med eval.
Demo:
    txt = '{ name: "Zebra Wild", location: "Afrika"},{ name: "Lion Wild", location: "Afrika" } '
    var persons = eval (' new Array( ' + txt + ')' );
    alert(persons[1].name);
Avatar billede milpoer Nybegynder
05. marts 2010 - 16:01 #6
Tak.. det virkede.. skulle bare lige forstå det først :)

Splazz smid lige et svar, så jeg kan give dig lidt point..
Avatar billede majbom Novice
05. marts 2010 - 20:15 #7
kommer her...

jeg håber du læste tjens' kommentar omkring brugen af eval!
Avatar billede milpoer Nybegynder
05. marts 2010 - 20:39 #8
Hej,

Med hensyn til at det var lidt usikker i forhold til hack og virus ?

Eller hvad tænkte du på ? Det var måden han gjorde det på som gjorde de simplet for mig.
Avatar billede majbom Novice
05. marts 2010 - 21:57 #9
-> #8 - nemlig!
Avatar billede milpoer Nybegynder
05. marts 2010 - 22:33 #10
Så det godt..

Men hvad er problemet i det ? Det kan jeg ikke lige gennemskue ?

Pt. er det brugt til til en iphone app.. som køre på telefonen..

Er der evt. en anden og mere sikker måde at gøre det på ?
Avatar billede tjens Nybegynder
06. marts 2010 - 15:16 #11
#10 Den sikre måde er, at includere en json-parser i siden, i stedet for at bruge eval().

Problemet med eval er, at den eksekverer en tekst som javascript, så bare en hacker har adgang til at skrive noget i tekststrengen, kan han få udført hvad som helst i browseren.

En json-parser kontrollerer tekststrengen minutiøst, og undlader at udføre evt. kode (som ikke er json-data) i tekststrengen.

Det er selvfølgelig vigtigere aldrig at udføre indlæst tekst på serversiden, men det er nok en god vane aldrig at gøre i klienter også.
Avatar billede milpoer Nybegynder
06. marts 2010 - 15:43 #12
Det kan jeg godt se.. tak for info.. prøver at skrive det om...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester