JavaScript "undefined" bei XMLHttpRequest().onload

w0nd4bra

Commander
Registriert
März 2008
Beiträge
2.512
Hallo,

folgendes Problem in Bild:
http://imgur.com/pij3u6I

Ich habe absolut keinen Plan, woher das undefined kommt, zumal alle Bilder ordnungsgemäß geladen werden.
Setze einen Request an ein php-script ab, welches mir JSON-Objekte zurückgibt, die auch, wie man leicht sieht, richtig geparst werden.

mein Code:

Code:
function request() {




    var oReq = new XMLHttpRequest(); //New request object
    var output;
    var myJson = new Array();
    oReq.onload = function () {
        myJson = JSON.parse(oReq.responseText);
        console.log(myJson);


        for (var index in myJson) {
            if (myJson.hasOwnProperty(index)) {
                switch (myJson[index].type) {
                    case "image/jpeg": output += '<a href="uploads/' + myJson[index].file + '"><img class="img-thumbnail" src="thumbs/' + myJson[index].thumb + '" width="200"/></a>';
                        break;


                    case "image/png": output += '<a href="uploads/' + myJson[index].file + '"><img class="img-thumbnail" src="thumbs/' + myJson[index].thumb + '" width="200"/></a>';
                        break;


                    case "image/gif": output += '<a href="uploads/' + myJson[index].file + '"><img class="img-thumbnail" src="thumbs/' + myJson[index].thumb + '" width="200"/></a>';
                        break;


                    case "video/webm": output += '<video controls><source src="uploads/' + myJson[index].file + '" type="' + myJson[index].type + '"></video>';
                        break;


                    case "video/youtube": output += '<a href="https://www.youtube.com/watch?v=' + myJson[index].file + '"><img class="img-thumbnail" src="thumbs/' + myJson[index].thumb + '" width="200"/></a>';
                        break;


                }
            }
        }








        document.getElementById("gallery").innerHTML = output;




    };
    oReq.open("get", "php/getimages.php", true);
    oReq.send();
}

Rufe dann per
Code:
<body onload="request()">

die Funktion auf...

Ideen? Was mache ich falsch, bin offen für Kritik, AJAX ist nicht so meins :)
 
Hallo,
warum nicht einfach JQuery benutzen. Ist deutlich einfacher als Raw JavaScript und zudem Browserunabhängig.

greetz
​hroessler
 
Dein json[index].type ist ein Wert, welcher nicht im switch/case vorkommt => output undefined. -> var output = ""; (Zeile 7) und ein default:

EDIT: Falsch
var output; //Output = undefined
output += "xy"; // output = undefined + "xy" = "undefinedxy"

Ergo: ein var output = ""; in Zeile 7 und es sollte funktionieren.
 
Ahh... okay... Sind dann immer die kleinen Fehler, die alles kaputt machen^^
Danke dir, hat wunderbar funktioniert.

Warum kein Jquery? Finde JS echt viel einfacher und angenehmer, mag die syntax überhaupt nicht.
Ob es nun kürzer ist oder nicht.
 
Zurück
Oben