在AJAX请求之后,有时我的应用程序可能会返回一个空对象,例如:

var a = {};

我该如何检查是否是这种情况?


当前回答

jQuery在这种情况下具有特殊的函数isEmptyObject():

jQuery.isEmptyObject({}) // true
jQuery.isEmptyObject({ foo: "bar" }) // false

阅读更多信息http://api.jquery.com/jQuery.isEmptyObject/

其他回答

您可以使用Undercore.js。

_.isEmpty({}); // true
function isEmpty(obj) {
  for(var i in obj) { return false; }
  return true;
}

只是一个变通办法。如果没有数据,服务器是否可以生成一些特殊属性?例如:var a={empty:true};然后,您可以在AJAX回调代码中轻松检查它。另一种检查方法:如果(a.toSource()==“({})”)//则“a”为空

编辑:如果您使用任何JSON库(例如JSON.js),那么可以尝试JSON.encode()函数,并根据空值字符串测试结果。

这里有一个快速、简单的函数:

function isEmptyFunction () {
  for (const i in this) return false
  return true
}

作为getter实现:

Object.defineProperty(Object.prototype, 'isEmpty', { get: isEmptyFunction })

console.log({}.isEmpty) // true

作为单独的功能实现:

const isEmpty = Function.prototype.call.bind(isEmptyFunction)

console.log(isEmpty({})) // true

我在用这个。

function isObjectEmpty(object) {
  var isEmpty = true;
  for (keys in object) {
     isEmpty = false;
     break; // exiting since we found that the object is not empty
  }
  return isEmpty;
}

Eg:

var myObject = {}; // Object is empty
var isEmpty  = isObjectEmpty(myObject); // will return true;
 
// populating the object
myObject = {"name":"John Smith","Address":"Kochi, Kerala"}; 
 
// check if the object is empty
isEmpty  = isObjectEmpty(myObject); // will return false;

从这里开始

使现代化

OR

可以使用isEmptyObject的jQuery实现

function isEmptyObject(obj) {
  var name;
  for (name in obj) {
    return false;
  }
  return true;
}