Nach einer AJAX-Anfrage kann es vorkommen, dass meine Anwendung ein leeres Objekt zurückgibt, z. B.:
var a = {};
Wie kann ich überprüfen, ob das der Fall ist?
Es gibt keine einfache Möglichkeit, dies zu tun. Sie müssen die Eigenschaften explizit durchlaufen:
function isEmpty(obj) {
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
return false;
}
return true;
}
Wenn [ECMAScript 5-Unterstützung] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys#Browser_compatibility) verfügbar ist, können Sie stattdessen Object.keys()
verwenden:
function isEmpty(obj) {
return Object.keys(obj).length === 0;
}
Zum Beispiel:
var a = {empty:true};
Dann können Sie es leicht in Ihrem AJAX-Callback-Code überprüfen.
Eine andere Möglichkeit der Überprüfung:
if (a.toSource() === "({})") // dann ist 'a' leer
EDIT: Wenn Sie eine JSON-Bibliothek (z. B. JSON.js) verwenden, können Sie die Funktion JSON.encode() ausprobieren und das Ergebnis mit einer leeren Zeichenkette testen.
function isEmpty(obj) {
for(var i in obj) { return false; }
return true;
}