我有这样的结果
{
"Errors" : {
"Failure" : {
"ShowAsPopup" : true,
"ErrorMessage" :"Some Message.",
"PopupTitle" : null
}
},
"IsValid" : false,
"WarningMessage" : null,
"SuccessMessage" : null
}
现在如果我Errors.Failure.ShowAsPopup
我得到一个值。期待什么。但是我想使用索引(如果可能的话)
我试过
Errors[0].Failure.ShowAsPopup
但这只是未定义。理想我想让它像错误[0]。[0]。显示AsPopup,我不必指定“失败”但我可能不得不重新考虑那部分。
我想要一种通用的方法来处理我的错误。看到一些错误需要弹出窗口,有些只是验证错误。所以现在我把它们都硬编了,我正试图摆脱它。我只是检查该错误是否需要弹出窗口。
所以而不是
if(response.Errors.Failure) { // alert('hi')};
else if(response.Errors.Failure2 {// alert('hi2')}
等等我只有一个if语句可以进行检查。
答案 0 :(得分:3)
您的代码和数据必须匹配。如果数据是这样的:
{"Errors":{"Failure":{"ShowAsPopup":true,"ErrorMessage":"Some Message.","PopupTitle":null}},"IsValid":false,"WarningMessage":null,"SuccessMessage":null}
以多行形式显示如下:
var data = {
"Errors": {
"Failure": {
"ShowAsPopup":true,
"ErrorMessage":"Some Message.",
"PopupTitle":null
}
},
"IsValid":false,
"WarningMessage":null,
"SuccessMessage":null
}
然后,您必须使用代码来匹配您的数据,在本例中为Errors.Failure.ShowAsPopup
。由于数据是对象形式,因此必须使用对象语法来读取它。数组和对象不可互换。如果您想使用Array语法来读取数据,那么数据将需要是一个不同的论坛。
您可以编写如下通用错误函数:
if (!data.IsValid) {
handleError(data);
}
function handleError(info) {
if (info.Errors ) {
if (info.Errors.Failure) {
if (info.Errors.Failure.ShowAsPopup) {
// show a popup error here using info.Errors.Failure.ErrorMessage
}
} else if (/* other types of errors here */) {
// handle other types of errors here
}
}
}
答案 1 :(得分:1)
// check if any errors at all
if (response.Errors instanceof Object && (response.Errors !== {}))
{
$.each(response.Errors, function(index, error){
// for your example, index will be "Failure", error will be the Object inside
if (error.ShowAsPopup) {
// do your popup thing
}
else
{
// do whatever else
}
});
}
答案 2 :(得分:0)
Errors.Failure.ShowAsPopup = Errors[0][0] = errors[0].ShowAsPopup
答案 3 :(得分:0)
花括号{}表示结构不是数组。所以我认为这应该有效:
response["Errors"]["Failure"]["ShowAsPopup"]
答案 4 :(得分:0)
您应该做的是以下任何一种情况。首先,你可以简单地遍历错误对象,如下所示:
for (var errorName in response.Errors) {
var error = response.errors[errorName];
alert(errorName.ErrorMessage);
}
这里发生的是response.Errors对象的每个属性都在循环。
另一种选择是将错误作为数组返回:
{ "Errors": [{"ShowAsPopup": true, "ErrorMessage": "Some message"}] }
无论哪种方式都能很好地运作。
答案 5 :(得分:0)
您可以创建一个JSON对象数组。
var errors = [
{"Failure": {
"ShowAsPopup":true,
"ErrorMessage":"Some Message.",
"PopupTitle":"Error Message #1"
},
"IsValid":false,
"WarningMessage":null,
"SuccessMessage":null
},
{"Failure": {
"ShowAsPopup":true,
"ErrorMessage":"Some Other Message.",
"PopupTitle":"Error Message #2"
},
"IsValid":false,
"WarningMessage":null,
"SuccessMessage":null
},
]
然后像这样访问每个错误:
errors[0].Failure.ErrorMessage
//This returns "Some Message"
errors[1].Failure.ErrorMessage
//returns "Some Other Message"