JSON Object auswerten

Sprint

Erfahrenes Mitglied
Hallo zusammen,

ich bekomme von einem PHP Script ein JSON Object zurück. Wenn ich mir das mittels stringify anzeigen lasse, kommt sowas bei raus:
JSON:
{"0":{},"length":1,"fileCounter":2,"selectedFiles":1,"formGroup":"ajax-file-upload-1708342189869","errorLog":{"0":{},"length":1},"responses":[["_IGP2451.jpg"]],"existingFileNames":["_IGP2451.jpg"],"container":{"0":{},"length":1,"prevObject":{"0":{},"length":1}}}
Es kann aber auch vorkommen, daß ein Fehler mit enthalten ist:
JSON:
{"0":{},"length":1,"fileCounter":2,"selectedFiles":1,"formGroup":"ajax-file-upload-1708342307378","errorLog":{"0":{},"length":1},"responses":[{"size_error":1}],"existingFileNames":["_IGP2456.jpg"],"container":{"0":{},"length":1,"prevObject":{"0":{},"length":1}}}
In dem Beispiel ist es size_error. Und genau da stehe ich im Moment total auf dem Schlauch. Wie kann ich feststellen, daß ein size_error in dem Object enthalten ist?
 
Einfach wird das, wenn das JSON formatiert ist:
Code:
{
            "0": {

            },
            "length": 1,
            "fileCounter": 2,
            "selectedFiles": 1,
            "formGroup": "ajax-file-upload-1708342307378",
            "errorLog": {
                "0": {

                },
                "length": 1
            },
            "responses": [
                {
                    "size_error": 1
                }
            ],
            "existingFileNames": [
                "_IGP2456.jpg"
            ],
            "container": {
                "0": {

                },
                "length": 1,
                "prevObject": {
                    "0": {

                    },
                    "length": 1
                }
            }
        }
Du kannst dann auf das size_error so zugreifen:
Code:
parsed.responses[0].size_error;
wenn das geparste Objekt in der Variablen parsed steht.
 
So ganz funktioniert das leider noch nicht, da ich immer "undefined" als Antwort bekomme, egal ob da ein Eintrag vorhanden ist oder nicht. Auch bei anderen Werten, wie z.B. formGroup, erhalte ich nur undefined.
 
Wie holst Du denn genau dieses Objekt? Wie wird es in PHP vorbereitet und wie bekommst Du es nach Javascript? Mit Ajax oder indem Du es direkt einbindest?
 
Das sind die Return Daten von einem fertigen Script, das Dateien per Drag-and-Drop hochlädt. Link

Die Daten werden bei der Verarbeitung der Dateien auf dem Server in einem Array gesammelt und dann als JSON kodiertem String an eine Callback Funktion in dem Script zurückgegeben.
 
Die Daten werden in der Uploadfunktion entgegengenommen und dort sollte dann auch die Warnung ausgegeben werden, wenn z.B. zu große Dateien hochgeladen werden.
Javascript:
$(document).ready(function(){
     $("#multipleupload").uploadFile({
        url:"_upltest.php",
        returnType:"json",
        multiple:true,
        fileName:"myfile",
        allowedTypes:"jpg,jpeg,png,pdf",
        maxFileSize:5000000,
        showDelete:false,
        showDone:true,
        afterUploadAll:function(obj){

alert(obj.responses[0].size_error);

        }
    });
});
 
Da muss man erst Mal drauf kommen: Das responses taucht zwei Mal auf:
1708419213511.png

Mit diesem Code kann ich dann auf das size_error zugreifen:
Code:
                afterUploadAll: function (obj) {
                    console.log(obj);
                    obj.responses.forEach(response => {
                        console.log(response.responses[0].size_error);
                    });
                }
 
Das ist leider nicht so eindeutig. Ich habe das jetzt ein paar Mal im FF getestet, bekomme aber immer die Meldung response(s).responses is undefined. Es ist aber auch nicht immer so, daß responses zwei Mal vorkommt. Das scheint auch damit zusammenzuhängen, wie viele Dateien auf einmal hochgeladen werden. Ich hatte fast immer nur ein responses. Oder kann das auch mit dem Betriebssystem zu tun haben? Daß Browser unter Win und Mac anders arbeiten?
 
Dass das vom BS abhängig ist glaube ich kaum. Wie man aus meinem Screenshot erkennen kann, ist das äußere responses ein Array und, wenn ich das richtig verstehe, mit einem Element pro hoch geladener Datei. Und die Elemente darin sind jeweils die Antworten vom Server, die Du mit deinem PHP generierst.
Wenn es bei dir nicht funktioniert, dann poste doch mal die vollständige Struktur von diesem obj so wie ich es mit dem Screenshot getan habe.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück