2015-10-12 178 views
0

我使用Jquery检查来自ajax调用的对象是否为空。检查Json对象是否为空

在这个例子中,我做了一个正确的AJAX调用,它返回一些数据。

console.log ("obj before Json parse: ",response); 
var test = $.isEmptyObject(response); 
console.log("test if object is empty:",test); 

obj before Json parse: [{"dateTime":"2015-10-02","entries":220}] 
est if object is empty: false 

但是在这个例子中,我做了一个不正确的AJAX调用,它不返回任何东西。

console.log ("obj before Json parse: ",response); 
var test = $.isEmptyObject(response); 
console.log("test if object is empty:",test); 

obj before Json parse: [] 
test if object is empty: false 

肯定测试变量在这种情况下应该是真的,因为对象是空的?

+1

的[我如何测试一个空的Javascript对象?(可能的复制http://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty -javascript-object) – Diptox

+1

'isEmptyObject'应该只用于普通对象,你似乎有一个数组,并且可以直接使用'response.length'。 – adeneo

回答

2

使用length来检查对象是否为空。

var isEmpty = (response || []).length === 0; 
+0

我应该使用response.length;然后。因为我刚刚测试了isPlainObject,并且在两种情况下都返回false。 –

+0

@AndreasUldallLeonhard'isPlainObject'作用于对象,如果响应是数组,则使用'arr.length'来检查它是否为空 – Tushar

+0

如果'response'为'null'或'undefined',则response.length'会引发错误。你可以更防守,并有'var test = response && response.length'。 – user5325596

0
var jsonData = JSON.parse(responseBody); 
tests['empty_or_not'] = jsonData.length === 0; 
+0

上面的代码片段适合我 –