我有以下AJAX调用:
var lineChars = new char[] { '\r', '\n' };
var nextLineIndex = input.IndexOfAny(lineChars, 0, 70);
后端的upload方法返回如下的JSON:
$('#fileupload').show().fileupload({
url: '/upload',
type: "POST",
cache: false,
dataType: 'json',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
done: function (e, data) {
var error_msg = $("#load_error_msg");
error_msg.html('');
if (data.result.error.length > 0) {
// process errors messages here
} else {
// do something else
}
},
})
代码绕过此检查{
"error": {
"fileUploadErrorIniSize": "File '' exceeds the defined ini size"
}
}
并始终通过data.result.error.length
条件。
此时我很困惑:在Javascript中检查数组是否为空是不正确的else
?如果不是正确的方式呢?
答案 0 :(得分:4)
它不是一个数组,它是一个普通的对象。普通对象默认不具有length
属性。
您可以使用Object.keys(data.result.error).length
查看它是否具有您的示例所拥有的任何自己的可枚举属性。
,假设data.result
确实指向该数据结构,那么:
if (Object.keys(data.result.error).length > 0) {
如果data.result
根本没有error
财产的可能性,那么您应该防范:
if (data.result.error && Object.keys(data.result.error).length > 0) {
但如果你知道它总是在那里(有时候是空的),那就没有必要了。