Avatar billede madeindk Nybegynder
13. maj 2007 - 17:50 Der er 24 kommentarer og
1 løsning

Problemer med AJAX

Hej eksperter, jeg har et problem med følgende script. I Internet Explorer kommer den med 'Ikke implementeret' - jeg ved ikke hvad det betyder.

function LoadTopPhotos()
{
    http_request = getXMLHTTP();
   
    // Kontrollerer XML paa klienten
    if (!http_request){
    alert(NoXMLHTTP);
    return false;
    }

    var strURL = "/includes/asp/generatePhotos.asp?noCache=" + Math.random(); + "";
   
    http_request.onreadystatechange = function()
    {       
        if (http_request.readyState == 4)
        {           
            if (http_request.status == 200)
            {               
                var splitResult = http_request.responseText.split(","); // Split funktion
               
                document.getElementById('Photo01').style.backgroundImage = "url(/Data/Party/Thumb/" + splitResult[1] + ".jpg)"; // Billede 1
                document.getElementById('Photo01_Info').innerHTML = splitResult[2]
               
                document.getElementById('Photo02').style.backgroundImage = "url(/Data/Party/Thumb/" + splitResult[3] + ".jpg)"; // Billede 1
                document.getElementById('Photo02_Info').innerHTML = splitResult[4]

                document.getElementById('Photo03').style.backgroundImage = "url(/Data/Party/Thumb/" + splitResult[5] + ".jpg)"; // Billede 1
                document.getElementById('Photo03_Info').innerHTML = splitResult[6]

                document.getElementById('Photo04').style.backgroundImage = "url(/Data/Party/Thumb/" + splitResult[7] + ".jpg)"; // Billede 1
                document.getElementById('Photo04_Info').innerHTML = splitResult[8]
            }
        }
    }
   
    http_request.open('GET', strURL, true);
    http_request.send(null);
   
    setTimeout("LoadTopPhotos()",300*1000);
}
Avatar billede roenving Novice
14. maj 2007 - 01:36 #1
Hvad er variablen 'NoXMLHTTP' ?-)

-- i øvrigt er det tåbeligt at forsøge at implementere noget Ajax (som jo nærmest må siges at være henimod morgendagens teknologi) ved at benytte innerHTML, som bestemt må siges at være gårsdagens lappeløsning (den findes faktisk slet ikke !-)
Avatar billede madeindk Nybegynder
14. maj 2007 - 10:31 #2
Det er bare en tekst hvor der står at ens computer ikke under XML. Hvordan ville du ellers lave det? Filen generatePhotos.asp returnerer bare et array jo der er kommaseperaret.
Avatar billede roenving Novice
14. maj 2007 - 13:18 #3
Det lyder ikke, som om det er det, der er problemet, men det skal se sådan ud, hvi det skal være korrekt DOM-behandling:

                document.getElementById('Photo01').style.backgroundImage = "url(/Data/Party/Thumb/" + splitResult[1] + ".jpg)"; // Billede 1
                document.getElementById('Photo01_Info').firtChild.nodeValue = splitResult[2];


-- og så skal elementet 'Photo01_Info' indeholde noget fra start, f.eks. en no-break-space:

<div id='Photo01_Info'>&nbsp;</div>
Avatar billede madeindk Nybegynder
14. maj 2007 - 14:00 #4
Ok, cool. Vil da klart helst skrive det DOM valid, men hvad synes du det lyder som om problemet er?

Jeg søgte efter fejlen 'Ikke implementeret' at det betød at serveren ikke kunne klare requesten, men det kan ikke passe. Det har nemlig fungeret fint.
Avatar billede roenving Novice
14. maj 2007 - 16:01 #5
Hvordan ser din getXMLHTTP()-funktion ud ?-)
Avatar billede madeindk Nybegynder
14. maj 2007 - 22:44 #6
Den ser sådan her ud:

function getXMLHTTP()
{
    var http_request = false;
                                                   
    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
      http_request = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    { // IE
      try {
      http_request = new ActiveXObject("Msxml2.XMLHTTP");
    }
      catch (e) {
      try {
      http_request = new ActiveXObject("Microsoft.XMLHTTP");
    }
      catch (e) {}
    }
    }
    return http_request;
}
Avatar billede roenving Novice
14. maj 2007 - 22:52 #7
Hrm, hrm ...

-- det ser ud på samme måde, som den kode, jeg har liggende ...

-- kan du stable et eksempel op, som du kan vise live ?-)
Avatar billede madeindk Nybegynder
14. maj 2007 - 23:03 #8
Du kan prøve at gå ind på: http://v3test.sykonia.dk i IE - fejlen skulle gerne opstå med det samme.
Avatar billede roenving Novice
14. maj 2007 - 23:09 #9
Hrm, min IE6 lavede ingen mærkværdigheder ...
Avatar billede madeindk Nybegynder
14. maj 2007 - 23:23 #10
Gør min IE6 og min IE7 på den anden computer :(
Avatar billede olebole Juniormester
15. maj 2007 - 14:37 #11
<ole>

Det lyder, somom den pågældende PC burde have reinstalleret Windows. Hvad sker der, hvis du bruger denne kode:

function getXMLHTTP() {
    var http_request = false;

    if  (window.XMLHttpRequest) { // Mozilla, Safari, IE7.0+  ...
        alert("XMLHttpRequest")
        http_request = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)  { // IE 6.0-
        alert("ActiveX")
        try {
        alert("Msxml2.XMLHTTP")
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            alert("Kunne ikke Msxml2.XMLHTTP")
            try {
                alert("Microsoft.XMLHTTP")
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e) {
                alert("Kunne ikke Microsoft.XMLHTTP")
            }
        }
    }
    return http_request;
}

/mvh
</bole>
Avatar billede madeindk Nybegynder
15. maj 2007 - 17:02 #12
Hej Ole, når jeg indsætter det der så alerter den: XMLHttpRequest - burde den ikke alerte: Msxml2.XMLHTTP ?
Avatar billede madeindk Nybegynder
15. maj 2007 - 17:09 #13
I kan også prøve at downloade min funktionsfil til mine JS funktioner på følgende adresse: http://v3test.sykonia.dk/includes/js/functions.js - ved godt i vil brokke jer over at jeg bruger innerHTML - men kan ikke få det der firstChild til at virke.
Avatar billede madeindk Nybegynder
16. maj 2007 - 12:19 #14
Ole, du siger at den pågældende PC trænger til at blive geninstalleret, nu har jeg prøvet på 4 forskellige computere og får samme fejl (Ikke implementeret) på alle 4 :)

Så det er nok ikke noget med computeren at gøre.
Avatar billede roenving Novice
16. maj 2007 - 13:07 #15
-- nu får jeg også fejlen, men du har jo 5 andre ekspterne scripts, måske kommer det derfra ?-)

-- men du udskriver jo også responseText, hvis overførslen ikke lykkes, det er vel lidt dumt ?-)

alert(http_request.responseText);
Avatar billede olebole Juniormester
16. maj 2007 - 13:08 #16
Nej, hvis du tester i IE7, er det helt korrekt, der alert'es "XMLHttpRequest". Det er ikke uden grund, jeg tilføjede IE.7.0+ i kommentaren: // Mozilla, Safari, IE7.0+  ...  ;o)
    http://msdn2.microsoft.com/en-us/library/ms535874.aspx

Hvis der alert'es, som du skriver, returnerer funktionen formodentlig også et korrekt objekt, så jeg må formode fejlen ikke ligger i dén del af din kode  =)

Hvis du virkelig skriver:
    // Kontrollerer XML paa klienten
    if (!http_request){
    alert(NoXMLHTTP);
    return false;
    }

- er det sikkert dér, fejlen ligger. Prøv med lidt gåseøjne på udsatte steder:
    // Kontrollerer XML paa klienten
    if (!http_request){
    alert("NoXMLHTTP");
    return false;
    }
Avatar billede madeindk Nybegynder
16. maj 2007 - 13:17 #17
roenving > Det er vel ligegyldigt om jeg gør det, det sker jo kun ved else ;) Jeg tror det er i den funktion der fucker up, for når man klikker rundt på andre sider så er der ingen fejl, og jeg bruger mine JS funktioner ret meget og der er ingen problemer.

Og min LoadTopPhotos funktion bliver også kun brugt et design og det er når designet loades.

olebole > NoXHMLHTTP er jo en variabel, og hvis jeg sætter gåsetegn om bliver den jo ikke alertet, hehe. Men jeg prøver det da gerne når jeg kommer hjem - er på job lige nu.
Avatar billede madeindk Nybegynder
16. maj 2007 - 13:18 #18
* Lige en rettelse: 'Og min LoadTopPhotos funktion bliver også kun brugt når designet loades og det gør det jo kun en gang.
Avatar billede olebole Juniormester
16. maj 2007 - 14:09 #19
"NoXHMLHTTP er jo en variabel" >> nå(!) ... jamen, det fremgår jo ikke af koden ... tværtimod  =)

Det eneste, der giver mening er, hvis det er en streng ... så jeg tillader mig at tro, du tager fejl - men det finder vi jo udaf, når du kommer hjem  ;o)
Avatar billede roenving Novice
16. maj 2007 - 14:35 #20
-- og det er det, prøv bare at kigge på 1. linje i det script, der er linket til !-)

-- og det var j altså også det første jeg surgte til, for det kunne jo være noget ... et eller andet ...
Avatar billede olebole Juniormester
18. maj 2007 - 12:53 #21
ups ... jeg havde overset linket ... sorry  =)

Det er ikke i den viste kode, det går galt. Det må være et andet sted, men det er ikke til at regne med IE's linjeangivelse, når JS-koden ikke ligger direkte i dokumentet - og jeg orker ikke at gå hele din kode igennem  =)
Avatar billede madeindk Nybegynder
29. maj 2007 - 15:31 #22
olebole og roenving, smid et svar. Nu virker det, guderne må vide hvorfor :)

Tak for hjælpen.
Avatar billede madeindk Nybegynder
04. august 2007 - 23:40 #23
Gider i smide et svar?
Avatar billede roenving Novice
06. august 2007 - 14:55 #24
Oki '-)
Avatar billede roenving Novice
30. oktober 2007 - 02:25 #25
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