[js] xml ophalen met httprequest, IE negeert mimetype

Pagina: 1
Acties:

  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 04-02-2022
Ik heb een webapplicatie die serverside dmv php een xmlbestand genereerd. Nu haal ik de inhoud van dat xmlbestand op dmv een xmlhttprequest. In firefox is dit allemaal geen probleem en kan ik de juiste nodes selecteren en toevoegen aan mijn webpagina. Maar in IE gaat het mis bij het ophalen van de xml. Dat wil zeggen, IE haalt de xml wel op maar herkend deze niet als zijnde xml.

Het probleem zit hem denk ik in het feit dat IE headers etc negeerd en op basis van de bestandsextensie het mimetype bepaalt. Als ik namelijk een statisch xml bestand aanmaak met de .xml extensie dat werkt het wel. Echter ik heb een dynamisch xml bestand met een .php extensie.

Ik vroeg mij dus af of er een manier is om IE te doen geloven dat de content die hij ophaalt xml is. Anders ben ik genoodzaakt om de hele meuk voor IE als tekststring op te halen en dan weer te converteren naar xml en te bewerken. dat wil ik liever niet omdat dat weer een stuk omslachtiger is.

[ Voor 1% gewijzigd door tombo_inc op 10-07-2007 16:46 . Reden: opmaak ]

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Zou je me een lol willen doen en je topicstart even voorzien van Hoofdletters, leestekens en paragrafen? Dit is een onleesbare brei.

(Overigens valt het me nu op dat je in zowat al je posts nalaat om hoofdletters e.d. te gebruiken; bij deze dan ook het vriendelijke verzoek er voortaan een beetje op te letten).

[ Voor 42% gewijzigd door RobIII op 10-07-2007 16:47 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:27

crisp

Devver

Pixelated

Ik heb er doorgaans geen problemen mee om IE vanuit PHP generated XML ook als XML te laten herkennen. Welke mimetype geef je je XML-bestand precies mee en hoe?

Intentionally left blank


  • Fibbers
  • Registratie: Augustus 2004
  • Laatst online: 31-07-2021
Doe je dit ook bij het opzetten van de ajax-request?
JavaScript:
1
2
3
4
...// maak http_request object aan
http_request.overrideMimeType('text/xml');
...
http_request.send(null); // oid

  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 04-02-2022
@fibbers
wat jij daar neer zet gebruik ik ook, maar die overrideMimeType werkt geloof ik niet in IE omdat dat geen method is van het XMLHTTP object van microsoft.

@crisp
ik gebruik in php de header() functie om de mimetype op text/xml te zetten.

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 04-02-2022
Heeft er iemand nog een idee waarom IE mijn data niet als xml wil zien?

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:27

crisp

Devver

Pixelated

Zonder uitgebreid code-voorbeeld blijft dat gissen ;)

Intentionally left blank


  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 04-02-2022
ok hier wat 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
24
var oConnection = new HTTPRequest( pfloaded ); //mijn xmlhttprequest object wrapper

function pfloaded() { //functie die bij statechange aangeroepen wordt
  var pb = document.getElementById( 'portbox' );

  if( ( ( oConnection.HTTPRequest.readyState == 4 ) || ( oConnection.HTTPRequest.readyState == 'complete' ) ) && ( oConnection.HTTPRequest.status == 200 ) ) {

    oContent = oConnection.getRequestData( 'xml' ).getElementsByTagName('div')[0];  //eerste div met data ophalen 
    
    if( document.importNode ) {
      
      pb.appendChild( document.importNode( oContent, true ) );
      
    } else {
            
      var Markup_Serialized = oContent.xml;

      pb.insertAdjacentHTML( 'beforeEnd', Markup_Serialized );
      
    }
    
  }

}

Het probleem is nu dat in IE oContent null is.
De method getRequestData haalt gewoon de responseText of responseXML op.

Als ik nu ipv de php extensie de xml extensie gebruik voor mijn bestand op de server dan werkt deze code wel.

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:27

crisp

Devver

Pixelated

Je voegt dus zo'n header toe:
PHP:
1
header('Content-Type: text/xml; charset=ISO-8859-15');

(wellicht een andere charset) ?

Geef je ook nog een XML declaration mee?
XML:
1
<?xml version="1.0" encoding="ISO-8859-15" standalone="yes"?>


Als je de XML direct in Firefox opvraagt, zie je dan onder tools->page info ook text/xml bij 'Type' staan?

Intentionally left blank


  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 04-02-2022
Ik had de header en de xml declaratie ook al toegepast. Daar ligt het niet aan.
Maar ik heb de fout inmiddels gevonden. Ik had namelijk een typfoutje gemaakt in mijn doctype declaratie, en daardoor wilde IE het bestand niet (fatsoenlijk) parsen. Een stom slordigheidje van mij dus. In ieder geval toch bedankt voor de hulp. :)

Nog 1 vraag.
Is dat standalone attribuut nodig en wat voor verschil maakt het dan als je het niet gebruikt?

[ Voor 14% gewijzigd door tombo_inc op 12-07-2007 16:38 ]

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:27

crisp

Devver

Pixelated

tombo_inc schreef op donderdag 12 juli 2007 @ 16:38:
Nog 1 vraag.
Is dat standalone attribuut nodig en wat voor verschil maakt het dan als je het niet gebruikt?
standalone="yes" wil zeggen dat de XML niet afhankelijk is van een extern gedeclareerde DTD, dus hoeven validating parsers die ook niet op te halen. Nu zijn de meeste parsers non-validating dus meestal wordt het genegeerd.

Intentionally left blank

Pagina: 1