Permalänk
Medlem

Trubbel med AJAX i IE

Hej!

Jag har under de senaste dagarna jobbat på att lära mig JavaScript och nu börjat labba med XML och AJAX. Den hämtar en XML-fil som ser ut på följande vis

<root> <book id="1"> <title>Boktitel</title> <pubDate>1970-01-01</pubDate> <author>Författare</author> <genre>Genre</genre> </book> </root>

Den hämtar allt utan problem i båda läsarna. Det ser jag genom

alert(httpRequest.responseText);

Firefox gör allt precis som den ska (visar XML-filen i en fin tabell), men IE visar bara en blank sida utan att klaga på några fel.

var xmldoc = httpRequest.responseXML; //alert(httpRequest.responseText); var books = xmldoc.getElementsByTagName("root").item(0); // Spawn table var table = document.createElement("table"); var headerrow = document.createElement("tr"); var header = true; for(var i = 0; i < books.childNodes.length; i++) { var book = books.childNodes[i]; var row = document.createElement("tr"); for(var n = 0; n < book.childNodes.length; n++) { if(header == true) { var col = document.createElement("th"); col.appendChild(document.createTextNode(book.childNodes[n].nodeName)); headerrow.appendChild(col); delete col; } var col = document.createElement("td"); col.appendChild(document.createTextNode(book.childNodes[n].firstChild.nodeValue)); row.appendChild(col); delete col; } if(header == true) { table.appendChild(headerrow); header = false; } table.appendChild(row); delete row; } document.getElementById("books").innerHTML = ""; document.getElementById("books").appendChild(table);

Är det någon som kan hjälpa mig med detta problem?

Tack på förhand,
Antennen

Visa signatur

SWECLOCKERS.COM

Permalänk
Medlem

Min kompis hade likande problem när vi gjorde en sida ihop. Jag kan inte mycket om AJAX/Javascript, jag kodar bara PHP.

Han lade med ett slupat nummer med i queryn enligt koden nedan. Vet inte om detta hjälper dig, jag är som sagt ingen mästare på Javascript och Ajax.

// Used to prevent IE(and others?) from caching the results. var rnd = Math.random; var query = 'webradio.php?rnd='+rnd; // Check if our browser supports this... function createHttpRequestObject() { var req; if(window.XMLHttpRequest){ // Firefox, Safari, Opera... request = new XMLHttpRequest(); } else if(window.ActiveXObject) { // IE request = new ActiveXObject("Microsoft.XMLHTTP"); } else { return false; } return request; } // Make the XMLHttpRequest object var http = createHttpRequestObject();

Hoppas det hjälper

Visa signatur

Bloggar om Hemautomation på HomeAutomateIt.com

Permalänk
Medlem

Det är tyvärr inte där skon klämmer. XML-filen hämtas som den ska och internet explorer kan ta fram värdet ur enskilda noder, problemet verkar vara integreringen av sälva tabellen. appendChild() etc.

Visa signatur

SWECLOCKERS.COM

Permalänk
Medlem

Skriv ut resultatet (koden) till en textarea och posta det här så kanske det ger någon ledtråd.

Permalänk
Medlem

Jag hade ett liknande problem.
Jag hade något i stil med:
<Select id="bla">
</Select>

Så försäkte jag ladda options dynamiskt med ajax. Det funkade inte alls i IE bara en tom lista, men i FF fungerade det utan problem.

Jag prövade då följande approach:
<div id"temp">
</div>

osså laddade jag hela select-kontrollen, alltså inte bara de olika options som fanns...

Så mitt tips är att pröva att läsa in hela tabellen i en div ... så att det är innehållet i en div ni ändrar och inte innehållet i en tabell.

hoppas det löser sig

Visa signatur

weeeee

Permalänk
Medlem

IE6 kräver att websidan ska vara online, via ett ipnr för att fungera med ajax.
Testa och släng upp den på localhost eller lik. och kolla om det hjälper?

FF funkar det även lokalt.

mvh Jim

Visa signatur

Besök JimNelin.com eller Jim Nelin på LinkedIn

Permalänk
Medlem

Det här kanske inte hjälper. Bara en ren skansning. Men vad händer när du byter ut dessa rader
document.getElementById("books").innerHTML = "";
document.getElementById("books").appendChild(table);
till
document.getElementById("books").innerHTML = table;

Visa signatur

CPU: Intel I5 2500k | Moderkort: Asus P8Z68-v pro | RAM: Kingston 8gb 1600mhz | SSD: Inter 320 Serie S 120gb | GPU: Asus GTX 580 DirectCU II (vattenkyld) | Chassie: Kabinett Fractal Design Define R3, Svart | PSU: Corsair TX 650W | CPU-kylare: Riktig vattenkylning