我设置了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
答案 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...
}