Avatar billede or.han Nybegynder
19. februar 2007 - 23:44 Der er 9 kommentarer og
1 løsning

XMLHttpRequest opfører sig lidt mærkeligt

Hej

Jeg prøver at lave noget AJAX, men der opstår nogle fejl jeg ikke forstår.

Jeg har fået forbindelse til min php-fil. Den gør hvad den skal. Den returnerer indholdet som skal være i <tbody></tbody>. Selve responseText indeholder alle <tr></tr> osv helt korrekt, men når jeg sætter den eksisternde <tbody>s .innerHTML lig med responseText, laver den fejl i IE.

Det virker fint i Firefox. Det er da mærkeligt at man ikke bare kan indsætte responseText i .innerHTML, men det må du kunne gøres..
Avatar billede olebole Juniormester
20. februar 2007 - 15:35 #1
<ole>

Det er ikke til at se præcist, hvad du gør - men du bruger i hvertfald AJAX forkert:
    http://www.eksperten.dk/spm/763611#rid6644045

/mvh
</bole>
Avatar billede or.han Nybegynder
21. februar 2007 - 17:00 #2
Altså jeg bruger responseText, i stedet for responseXML, men det er fordi mit html bliver "lavet" i php-filen. Så må jeg vel bruge responseXML og danne HTML'en udfra xml-filen.
Avatar billede olebole Juniormester
23. februar 2007 - 10:04 #3
Jamen, hvorfor i laver du dog HTML'en på serveren? Det er under ingen omstændigheder smart  =)
Avatar billede or.han Nybegynder
27. februar 2007 - 18:10 #4
Det er jo smart nok fordi jeg bruger samme fil til AJAX og til folk der ikke benytter der AJAX. Så i stedet for at sende som XML og lave om til HTML og i anden fil lave direkte HTML, ville jeg springe XML over, men det har egentlig bare skabt mange problemer.

Så jeg fik skiftet til XML :D

Jeg har lige et spørgsmål som du sikkert kan svare på. Er innerHTML en dårlig ting udover at det ikke er en standard? Har bare lagt mærke til at du i mange tråde siger at det ikke bør bruges, men hvad er ulemperne? Jeg har fornylig læst "PPK on Javascript" (fra www.quirksmode.org), og han siger at, hvis der er mange tags involveret, skal man jo skrive en masse document.createElement. Dette er både besværligt samt vil forårsage en ringere load-tid. Så i stedet kunne man bruge innerHTML. Jeg ved ikke om du kender ham, men han er en af de "store drenge" indenfor javascript. Da du også er en "stor dreng" indenfor javascript, vil jeg også bare høre din mening om det.
Avatar billede roenving Novice
28. februar 2007 - 09:52 #5
innerHTML er direkte ugyldigt i xhtml, så bare alene af den grund ...

-- i øvrigt er det jo ikke den store omkostning at skrive et par objekter eller (nestede) funktioner, som kan klare sagen (se f.eks. gmail !-)
Avatar billede olebole Juniormester
28. februar 2007 - 15:28 #6
"Visse drenge" indenfor JavaScript/DOM bruger et hav af createElement.
"Begavede drenge" opretter derimod en template af HTML-elementer og kloner den med cloneNode.
- så må du selv fordele drengene efter størrelse  =)

I øvrigt må man endelig ikke lade sig forblænde af, at visse sites og/eller personer meget ofte bliver citeret. Nogle af de oftest citerede på WWW er absolut alt andet end kompetente - og der er da også skrevet bunker af vrøvl og misforståelser på quirksmode.org  ;o)

innerHTML er noget rod at bruge, bl.a. fordi den overskriver koden. Derved går bl.a. JavaScript referencer til elementer i DOM'en tabt. Desuden er den buggy i FF, hvor den ikke nødvendigvis returnerer den DOM'ens reelle status quo.
- og så har roenving en meget vigtig pointe: Den er ugyldig/ubrugelig under XHTML
Avatar billede or.han Nybegynder
28. februar 2007 - 15:54 #7
Altså jeg anvender ikke XHTML selv, men det begynder jeg nok efterhånden, så det er nok en god grund til at lade være med at bruge det.

Man kan jo ikke cloneNode når det ikke er samme type element man vil oprette. Hvis fx man vil lave en div som har en avanceret opbygning med forskellige elementer, skal man jo stadig skrive createElement en masse gange.
Avatar billede or.han Nybegynder
28. februar 2007 - 18:19 #8
Desuden er innerHTML også meget hurtigere end DOM, som quirksmode.org også viser. Men ja det kommer vel lidt an på ens situation. Læg I bare et svar, så deler jeg pointene.
Avatar billede roenving Novice
02. marts 2007 - 10:58 #9
Oki '-)
Avatar billede roenving Novice
04. marts 2007 - 14:13 #10
-- og tak for point ;~}
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