[javascript]xml-bestand doorgeven aan js om te parsen

Pagina: 1
Acties:

  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 19-12-2025

wizzkizz

smile...tomorrow will be worse

Topicstarter
Momenteel ben ik bezig om een nogal uitgebreide applicatie te maken die webbased is. In deze applicatie zijn GUI en logica volledig gescheiden, waarbij de uitwisseling van data gebeurt middels XML.

De GUI die ik momenteel aan het bouwen ben, maak ik in javascript, maar door de opzet die ik gekozen heb is het in principe mogelijk om met elke taal een GUI te maken voor de applicatie.

Tot op heden ging eigenlijk alles goed, maar nu loop ik tegen wat beperkingen van de browser aan wat betreft het uploaden van bestanden. Omdat ik dit niet middels een ajax-request kan doen en ik niet wil dat de gebruiker additionele software moet installeren (om java te draaien bijv) én het cross-browser moet zijn en ik dus geen activeX kan gebruiken, moet ik op dit punt een beetje improviseren.

Als ik de bestanden ge-upload heb, moet ik een xml-response krijgen die de status van de upload weergeeft. Met status bedoel ik in dit geval of het bestand opgeslagen is en zo ja waar en indien niet de reden hiervoor (er mogen via deze manier alleen afbeeldingen ge-upload worden).
Met behulp van deze data kan ik de gebruiker dan vragen om keywords aan de afbeeldingen toe te kennen enzo. Het toekennen van deze keywords kan eigenlijk niet voor het uploaden, omdat de upload-functie dmv een truckje een aantal bestanden tegelijk kan uploaden en de GUI anders erg onoverzichtelijk wordt.

Nu komt mijn eigenlijke probleem: hoe zorg ik ervoor dat ik die response terug kan geven aan de betreffende pagina (moet dus volledig client-side geparst worden)? Is er een manier om een xml-bestand door te geven aan een html-pagina en te parsen met javascript?

Uploads vanuit een andere GUI (bijv. een installatie van een een .NET app) kunnen bestanden uploaden via een speciaal xml-bestand met daarin de files, maar dit werkt dus niet in geval ik het webbased wil uploaden.

Kan iemand me een schop in de goede richting geven?

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.


  • ajvdvegt
  • Registratie: Maart 2000
  • Laatst online: 04-12-2025
Het lijkt me toch dat XmlHttpRequest hiervoor gemaakt is. Onder IE welliswaar een ActiveX component, maar bij andere browsers niet (dus cross-platform). Maar goed, je 'kan' dit niet gebruiken zeg je. Je kan weer gaan knoeien met verborgen iframes, zoals 'vroeger', maar die zijn grotendeel deprecated door het xmlhttprequest.

I don't kill flies, but I like to mess with their minds. I hold them above globes. They freak out and yell "Whooa, I'm *way* too high." -- Bruce Baum


  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 19-12-2025

wizzkizz

smile...tomorrow will be worse

Topicstarter
ajvdvegt schreef op zaterdag 19 november 2005 @ 14:46:
Het lijkt me toch dat XmlHttpRequest hiervoor gemaakt is. Onder IE welliswaar een ActiveX component, maar bij andere browsers niet (dus cross-platform). Maar goed, je 'kan' dit niet gebruiken zeg je. Je kan weer gaan knoeien met verborgen iframes, zoals 'vroeger', maar die zijn grotendeel deprecated door het xmlhttprequest.
Ik gebruik XMLHttpRequest al veel, maar hier wordt het uitermate lastig. Om de files te uploaden, moet je nl. direct naar een server-side script uploaden, je kan dat niet doen middels javascript. Dus upload ik naar een server-side script.

Het probleem is nu, hoe stel ik mijn 'statusrapport' ter beschikking aan de daarvoor bestemde pagina binnen mijn GUI? Dat rapport wordt gegenereert binnen dat server-side script, maar ik weet geen enkele manier om dit te 'posten' naar mijn GUI (binnen de beperkingen van de browser dan).

[edit]
Een mogelijke work-around is wellicht om te posten naar een hidden (i)frame, zoals ajvdvegt al zegt, en dan daar de xml-response uitlezen (de oude manier zegmaar). Maar dat wil ik alleen gebruiken als het echt niet anders kan.

[ Voor 17% gewijzigd door wizzkizz op 19-11-2005 17:30 ]

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.


  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 19-12-2025

wizzkizz

smile...tomorrow will be worse

Topicstarter
post-weekeinde-kickje

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.


  • LvdO
  • Registratie: Augustus 2005
  • Laatst online: 20-05-2024
Je wil een image upload maken en dat kan alleen met een standaard form post. Javascript kan niet bij de lokale files van de gebruiker, dus XmlHttp valt af voor het uploaden. Er zit dus niet anders op dan een post doen met een (hidden) iframe.

Maar dat wil nog niet zeggen dat je status informatie niet met XmlHttp kan binnenhalen. Als ik jou was zou ik de status informatie op de server in de sessie bewaren. Op je hidden iframe zet je een onload event handler. Als die vuurt, kan je client side javascript het weer overnemen en aan de server de status ophalen.

Als je meerdere parallele uploads wil ondersteunen, kan je upload script een id genereren en dat doorgeven in het result. In XML, maar dat is lastig omdat je dan je inhoud van je iframe moet gaan parsen. Je kan ook wat javascript genereren dat het id zet in zijn parent frame.

Succes!

Xopus


  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 19-12-2025

wizzkizz

smile...tomorrow will be worse

Topicstarter
ik denk dat ik er niet veel heil in zie om dat xml-file in de sessie op te slaan. Dan laat ik liever server-side het statusrapport genereren en dat dan terug sturen naar het hidden (i)frame. Dan parse ik de inhoud van het frame wel.

En verder, die uploads gaan niet parallel, maar serieel. Op één pagina kun je, op een manier zodat het lijkt alsof er maar 1 file-field is (en nog customized ook), meerdere bestanden selecteren. Die worden dan in één form-submit verstuurd en server-side als batch afgehandeld. In het statusbericht komen dus alle files uit de batch voor, met voor elke file de betreffende status.

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.

Pagina: 1