[AJAX] Data XML-pagina weergeven

Pagina: 1
Acties:
  • 464 views sinds 30-01-2008
  • Reageer

  • kleautviool
  • Registratie: Mei 2003
  • Laatst online: 15:04
Sinds vanmiddag ben ik een beetje met AJAX aan het stoeien om gegevens uit een XML-bestand in een HTML pagina in te kunnen voeren.
Aangezien mijn host voor XML-functies geen ondersteuning biedt, en ik niet met XSL kan werken omdat ikzelf het XML bestand niet maak, kom ik (volgens mij) bij AJAX uit.

Nu ben ik hier dus vanmiddag een beetje mee bezig geweest, en ik loop direct tegen een probleem aan. Om de gegevens uit het XML in een textarea weer te geven heb ik het volgende stukje code:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<script type="text/javascript">
    function makeRequest(url){
        if(window.XMLHttpRequest){
            http_request = new XMLHttpRequest();
            if(http_request.overrideMimeType){
                http_request.overrideMimeType('text/xml');
            }
        }else if(window.ActiveXObject){
            http_request = new ActiveXObject("Microsoft.XMLHTTP");
        }
        http_request.onreadystatechange = function(){
            if(http_request.readyState == 4){
                if(http_request.status == 200){
                    document.getElementById('textveld').value = http_request.responseText;
                }else{
                    document.getElementById('textveld').value = "Error!\nGeen data gevonden!";
                }
            }
        };
        http_request.open('GET', url, true);
        http_request.send(null);
    }
</script>


Wat verderop in mijn pagina staat de volgende HTML om de data in de textarea te zetten:

HTML:
1
2
<p><input type="button" value="Test" onclick="makeRequest('http://ws.audioscrobbler.com/1.0/user/Maurice-k/recenttracks.xml')"></p>
<p><textarea cols="65" rows="15" id="textveld"></textarea></p>


Alleen als ik nu op de knop klik, dan werkt dit in Internet Explorer wel, maar als ik dit in Firefox doe krijg ik de volgende error:
Error: uncaught exception: Permission denied to call method XMLHttpRequest.open
Nu lijkt mij dit een verkeerde instelling in Firefox, alleen heb ik dus geen idee welke instelling en hoe ik dit aan kan passen.

Dus hoop ik dat iemand weet wat dit probleem is, en hoe ik het op kan lossen.

Ik heb al via google en de GoT search gezocht, maar geen bruikbare pagina's gevonden.

  • Sayko
  • Registratie: Juni 2001
  • Laatst online: 18-02 20:43

Sayko

Knowledge Is Power

eerste hit in google

http://www.captain.at/how...denied-xmlhttprequest.php

Zoeken de volgende keer

  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Je zegt dat je niet met XSL kunt werken? Waarom werk je niet met client side xslt?

Ik ontken het bestaan van IE.


  • kleautviool
  • Registratie: Mei 2003
  • Laatst online: 15:04
Eh....

waarschijnlijk omdat ik geen idee heb wat dat is :o :z

Verwijderd

http://www.w3schools.com/xsl/xsl_client.asp

je kan met js zowel de xsl als de xml inladen, transformeren en direct in je xhtml plempen, de link hierboven is een voorbeeld in IE (er zijn betere voorbeelden though)

Verwijderd

Clientside xsl zou ik vanwege performance redenen persoonlijk niet doen. Xsl transformaties serverside zijn nog altijd superieur.

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op vrijdag 10 februari 2006 @ 20:40:
Clientside xsl zou ik vanwege performance redenen persoonlijk niet doen. Xsl transformaties serverside zijn nog altijd superieur.
Ik denk dat clientside XSL transformatie nog altijd sneller is dan bijvoorbeeld mbv DOM-methoden een XML-file doorlopen en iets met de inhoud doen.
Voordeel van serverside transformatie is meer dat je dan zeker bent van ondersteuning daarvoor en de clients een toegankelijk formaat aanbiedt (HTML) :)

Intentionally left blank


Verwijderd

Dat hangt af van de hoeveelheid en complexiteit van je data icm je xsl. We hebben intern ook een aantal zaken van xsl naar pure javascript moeten overzetten omdat de performance gewoon echt te slecht was. DOM performance overtreffen kan ik me voorstellen, maar een lompe innerHTML niet. Is overall ook een known issue met IE6, lage performance.

[ Voor 15% gewijzigd door Verwijderd op 10-02-2006 22:56 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op vrijdag 10 februari 2006 @ 22:55:
Dat hangt af van de hoeveelheid en complexiteit van je data icm je xsl. We hebben intern ook een aantal zaken van xsl naar pure javascript moeten overzetten omdat de performance gewoon echt te slecht was. DOM performance overtreffen kan ik me voorstellen, maar een lompe innerHTML niet. Is overall ook een known issue met IE6, lage performance.
True. IE is eigenlijk enkel op het gebied van rendersnelheid superieur aan andere browsers (ook logisch gezien het gebrek aan ondersteuning van allerhande zaken die de complexiteit van een renderengine behoorlijk verhogen) - op alle andere vlakken winnen de alternatieve browsers het meestal wel :)

Bottomline blijft: als je toegankelijkheid wilt ga dan voor serverside transformatie oid; dat lost ook meteen het cross-domain probleem op ;)

Intentionally left blank


  • kleautviool
  • Registratie: Mei 2003
  • Laatst online: 15:04
* * Immense schop * *

Ik heb de laatste tijd gezocht naar oplossing maar ik kom tot de conclusie dat het in Firefox niet mogelijk is om een XML bestand vanaf een andere server in te laden en iets met de inhoud te doen.
Klopt dit, of heb ik niet goed gezocht?

Het lijkt me namelijk vrij vreemd dat (als je server geen XML ondersteuning heeft) je geen externe XML bestanden in kunt laden en weer kunt geven.

Ik heb (via google) op de site van mozilla en W3C gezocht, maar geen bruikbare oplossing gevonden. Blijf maar tegen de bovengenoemde error aanlopen.

Enkele links die ik al tegengekomen ben zijn:En natuurlijk deze pagina die hier gepost is (waarin tevens wel het volgende staat
If the page with the XMLHttpRequest is on a http:// URI (on a webserver), it is not possible to fetch data from another domain!!! This is a security measure of Mozilla/Firefox.
)

Nu is mijn vraag dus of hier ook geen workaround of e.d. voor is of heb ik gewoon pech?


--
Trouwens ik zal mijn doel uitleggen want misschien dat iemand aan de hand hiervan een balletje op kan gooien om het toch te laten werken.

Ik wil namelijk gegevens van mijn last.fm profiel op mijn site weergeven, en deze gegevens worden in normale tekst (.txt), XML, XSPF en/of in RSS weergegeven (zie deze pagina op audioscrobbler.net).

Deze data (enkele dingen dan) wil ik op mijn site weergeven, maar dit kan dus niet serverside omdat mijn host de XML module uit heeft staan o.i.d.

Het is nu niet mijn vraag of iemand een kant en klaar script wil posten, maar als iemand mij een beetje op weg kan helpen zou dat erg gewaardeerd worden :)

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
XML bestand vanaf een andere server in te laden
Dan doe je wat verkeerd denk ik, want ik heb ooit eens een script gemaakt waarmee je de content uit een rss feed van eender welke site kan inladen. Of je server daarom XML moet ondersteunen weet ik niet. Ik neem aan van niet, want je haalt gewoon de content uit die file en daarna doe je er wat mee.
Deze data (enkele dingen dan) wil ik op mijn site weergeven, maar dit kan dus niet serverside omdat mijn host de XML module uit heeft staan o.i.d.
Kan je je host dan niet even mailen en vragen om de XML module in te schakelen? Of hebben ze een goede reden om dat niet te doen?

March of the Eagles


Verwijderd

Cross domain XmlHttpRequest kan inderdaad (nog) niet, zelf headers ophalen met XmlHttpRequest van een ander domein is niet betrouwbaar.

  • kleautviool
  • Registratie: Mei 2003
  • Laatst online: 15:04
Ik heb mijn host hier al over gemaild en kreeg het volgende antwoord:
[..]
Het is niet alleen een kwestie van instellen, maar ook onderhouden, upgraden en als php.net het niet accoord vind weer downgraden.
AJAX heb ik gehoord is een goed alternatief die met XML en HTML parsing kan omgaan.
[..]
Dus ik zal ze hier nog maar eens over mailen met de vraag dit toch in te stellen. Want kan iemand mij anders de eventuele voor-/nadelen van het inschakelen van een XML module vertellen, dan kan ik dat aan mijn host doorgeven.

Alvast bedankt voor de hulp tot zover.

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 09-12-2025
Als je van een andere server XML wilt halen dan kun je dat ook via een scriptje doen. Je geeft dan de url via een get parameter mee en het scriptje laad dan de inhoud in en schrijft deze naar de output. Wel erg mee uitkijken, want als je niet goed controleert kan iemand de inhoud van al je php scripts bekijken, en dat wil je niet.

Noushka's Magnificent Dream | Unity

Pagina: 1