AJAXリクエストの後、アプリケーションが以下のように空のオブジェクトを返すことがあります。
var a = {};
どうすればそのような状況を確認できますか?
これを簡単に行う方法はありません。プロパティを明示的にループさせる必要があります。
function isEmpty(obj) { for(var prop in obj) { if(obj.hasOwnProperty(prop)) return false; } return true; }
ECMAScript 5 サポート](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys#Browser_compatibility)があれば、代わりに Object.keys() を使うことができます。
Object.keys()
function isEmpty(obj) { return Object.keys(obj).length === 0; }
1.単なる回避策です。データがない場合に、何か特別なプロパティを生成することはできますか?
例えばですが
var a = {empty:true};
そうすれば、AJAXコールバックのコードで簡単に確認することができます。
2.チェックする別の方法
if (a.toSource() === "({})") // その場合、'a'は空です
EDIT: JSONライブラリ(例:JSON.js)を使用している場合は、JSON.encode()関数を試して、空の値の文字列に対する結果をテストすることができます。
function isEmpty(obj) { for(var i in obj) { return false; } return true; }
これを簡単に行う方法はありません。プロパティを明示的にループさせる必要があります。
ECMAScript 5 サポート](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys#Browser_compatibility)があれば、代わりに
Object.keys()
を使うことができます。1.単なる回避策です。データがない場合に、何か特別なプロパティを生成することはできますか?
例えばですが
そうすれば、AJAXコールバックのコードで簡単に確認することができます。
2.チェックする別の方法
EDIT: JSONライブラリ(例:JSON.js)を使用している場合は、JSON.encode()関数を試して、空の値の文字列に対する結果をテストすることができます。