这个对象是空的,Javascript

时间:2009-12-22 15:58:26

标签: javascript

我设置了ajax系统。当MySQL查询没有返回任何数据时,我需要它来传回一个空对象。我在php脚本中创建了一个名为'data'的节点,即使查询没有返回数据,我也传递了$ data ['success'] = 1。

诀窍是我无法弄清楚如何查看查询是否返回数据。

我试过......

// sub responseObj.data for responseObj.data[0] for the following if's
if(responseObj.data[0].length == -1)  

if(responseObj.data[0] == null)

if(responseObj == undefined)
//edit: added this...
if(!responseObj.data[0])

我真的失去了我尝试过的任何其他各种代码片段。

编辑:添加生成的xml传递给我的脚本
XML - 返回零结果

<response_myCallbackFunction>  
  <success>1</success>  
<response_myCallbackFunction>

XML - 返回填充的查询

<response_myCallbackFunction>  
  <data> 
  <random_data>this is data</random_data>  
  </data>  
  <success>1</success>  
<response_myCallbackFunction>

有没有办法检查javascript中的对象是否为空?

-Thanks

5 个答案:

答案 0 :(得分:8)

Obj.hasOwnProperty('blah')似乎无法检查属性是否存在。

function isEmptyObj(obj){
  for(var i in obj){
    return false;
  }
  return true;
}

isEmptyObj({a:1}); //returns true

isEmptyObj({}); //returns false

答案 1 :(得分:3)

你可以尝试

if( responseObj["data"] ) {
   // do stuff with data
}

if( responseObj.hasOwnProperty("data") && responseObj.data ) {
   // do stuff with data
}

答案 2 :(得分:1)

if(typeof responseObj.data != 'undefined') {
   // code goes here
}

答案 3 :(得分:1)

对于ES5,您有getOwnPropertyNames

var o = { a:1, b:2, c:3 };
Object.getOwnPropertyNames(o).length // 3

答案 4 :(得分:0)

如果responseObj是XML Document对象(来自xhr.responseXML属性),那么:

if (responseObj.getElementsByTagName("data").length > 0) {
    // do stuff...
}

如果responseObj是JavaScript对象:

if (responseObj.data) {
    // do stuff...
}