Hallo Freunde der Coding Section.
Hier mein Problem:
Ich habe eine for function welche mir Daten aus Json Datenbanken in eine HTML Tabelle optisch ausgibt. Da diese ganzen Json Datenbanken per API aufgerufen werden benötige ich natürlich auch Authentifizierungen mit XMLHttpRequest. Soweit so gut, keine großen Probleme.
Das ganze dient zur einer optischen Ausgabe von Berichten. Die Tabelle besteht somit aus einer Frage und einer Antwort Spalte. Fragen funktionieren Problemlos, bei den Antworten kommen dann aber die Probleme.
So werden Text Antworten mithilfe von for Schleifen ausgeben, genau so wie Auswahl-Antworten (yes, no, partly). Nun scheitert es bei den Bildern.
Ausgegeben bekomme ich in der Antwort-Json nur die guid des Bildes und habe diese dann per API Aufruf in meine Tabelle verfrachtet. Das Problem, dass die ausgegebenen Bilder alle nur bei der letzten Frage statt bei den einzelnen richtigen Fragen ausgegeben werden.
Beispiel im Screenshot:
[Only registered and activated users can see links. Click Here To Register...]
getImage Function:
Aufruf der Function und der gesamte Codeteil:
ich bedanke mich für jede Hilfe :).
Gruß,
euer MaisKolben
Hier mein Problem:
Ich habe eine for function welche mir Daten aus Json Datenbanken in eine HTML Tabelle optisch ausgibt. Da diese ganzen Json Datenbanken per API aufgerufen werden benötige ich natürlich auch Authentifizierungen mit XMLHttpRequest. Soweit so gut, keine großen Probleme.
Das ganze dient zur einer optischen Ausgabe von Berichten. Die Tabelle besteht somit aus einer Frage und einer Antwort Spalte. Fragen funktionieren Problemlos, bei den Antworten kommen dann aber die Probleme.
So werden Text Antworten mithilfe von for Schleifen ausgeben, genau so wie Auswahl-Antworten (yes, no, partly). Nun scheitert es bei den Bildern.
Ausgegeben bekomme ich in der Antwort-Json nur die guid des Bildes und habe diese dann per API Aufruf in meine Tabelle verfrachtet. Das Problem, dass die ausgegebenen Bilder alle nur bei der letzten Frage statt bei den einzelnen richtigen Fragen ausgegeben werden.
Beispiel im Screenshot:
[Only registered and activated users can see links. Click Here To Register...]
getImage Function:
Code:
function getImage(image){
var xhr = new XMLHttpRequest();
xhr.open('GET', + url + 'api/pictures/' + image, true);
xhr.setRequestHeader('Authorization', getAuthCookie());
xhr.responseType = 'arraybuffer';
xhr.onload = function(e) {
if (this.status == 200) {
var uInt8Array = new Uint8Array(this.response);
var i = uInt8Array.length;
var biStr = new Array(i);
while (i--)
{ biStr[i] = String.fromCharCode(uInt8Array[i]);
}
var data = biStr.join('');
var base64 = window.btoa(data);
tr.append('<td><img src="data:image/jpg;base64,' + base64 + '" height="20%" width="20%"/></td>');
}
};
xhr.send();
}
Code:
var tr;
for (var i = 0; i < obj1.Forms[f].Questions.length; i++) {
var found = false;
for(var x = 0; x < obj2.length; x++) {
if(obj2[x].QuestionID == obj1.Forms[f].Questions[i].QuestionID) {
tr = $('<tr/>');
tr.append("<td>" + obj1.Forms[f].Questions[i].Caption + "</td>");
tr.append("<td>-</td>");
if(obj2[x].Text != undefined && obj2[x].Text != null) {
tr.append("<td>" + obj2[x].Text + "</td>");
} else if(obj2[x].Choices != undefined && obj2[x].Choices != null) {
var choices = "";
obj2[x].Choices.forEach(function(e) {
obj1.Forms[f].Questions[i].Choices.forEach(function(c) {
if(c.ChoiceID == e) {
if(choices != "") choices += "<br />";
choices += c.Caption;
}
});
});
tr.append("<td>" + choices + "</td>");
} else if(obj2[x].Picture != undefined && obj2[x].Picture != null) {
getImage(obj2[x].Picture);
}
$('table').append(tr);
found = true;
break;
}
}
if(!found) {
tr = $('<tr/>');
tr.append("<td>" + obj1.Forms[f].Questions[i].Caption + "</td>");
tr.append("<td>-</td>");
tr.append("<td>-</td>");
$('table').append(tr);
}
}
Gruß,
euer MaisKolben