我在json数据之下:
{
"ID": [
"The i d field is required."
],
"terms_condition": [
"The terms condition field is required."
]
}
并存储在变量中:
var DataJson = data.responseText;
var Json = JSON.parse(DataJson);
var IdError = Json.ID[0];
var TermsConditionError = Json.terms_condition[0];
现在,当Uncaught TypeError: Cannot read property '0' of undefined
不是ID
exists
我已尝试使用此示例来防止错误处理。
if (typeof Json.ID[0] !== 'undefined') {
alert('validation message found');
} else {
alert('validation message not found');
}
但这不知道我做错了什么?
感谢。
答案 0 :(得分:2)
试试这个。
if (Json !=undefined && typeof Json.ID[0] != undefined ) {
alert('validation message found');
} else {
alert('validation message not found');
}
TypeError:无法读取属性' 0'未定义的
当主json对象为空或未定义时,会发生此错误。当json对象中没有数据时会发生这种情况。
答案 1 :(得分:1)
要检查变量或字段是否已定义,您可以将其与undefined
if ((Json !== undefined) && (Json.ID !== undefined) && (Json.ID[0] !== undefined)) {
alert('validation message found');
} else {
alert('validation message not found');
}
我的代码中没有任何问题。请参阅下面的代码段。
var Json = JSON.parse('{"ID": ["The i d field is required."], "terms_condition": ["The terms condition field is required."]}');
var IdError = Json.ID[0];
var TermsConditionError = Json.terms_condition[0];
document.writeln(IdError + '<br>');
document.writeln(TermsConditionError + '<br>');
document.writeln('==================<br>');
function isDefined(Json) {
return (Json !== undefined) && (Json.ID !== undefined) && (Json.ID[0] !== undefined);
}
var inputData = [
undefined,
{},
{ID: ''},
{ID: ['value']}
];
inputData.forEach(function(inputDaten) {
document.writeln(JSON.stringify(inputDaten) + ': ' + isDefined(inputDaten) + '<br>');
});
&#13;
可能问题出在data.responseText