在ajax请求的成功回调中,我得到一个对象,它是一个对象数组(poList
)。我想遍历这个列表,如果status
属性是什么,那么就做点什么。
在下面的示例中,response.PoList
是一个有效的数组对象,其中包含两个项目,x
为0
(在调试器中,我可以将鼠标悬停在PoList上并且它可以正常工作);但是,status
不存在(即,此if语句始终为false)。我在这做错了什么
for (var x = 0; x < response.PoList.length; x++) {
if (response.PoList[x].Status == 'Not edited') {
response.PoList[x].StatusNum = 1;
} else {
response.PoList[x].StatusNum = 3
}
}
修改
请参阅下面的截图,我不认为这是一个区分大小写的问题。因此,突出显示的是response.PoList
(不只是response
),x
目前是0
,如果我将鼠标悬停在Status
上,我什么也得不到(没有“ undefined
“工具提示或其他任何内容”
答案 0 :(得分:2)
您的代码按提供的方式工作 - 具体取决于它是否与您的数据实际匹配。
我根据你的代码制作了这个例子。如果您的响应对象不同,那么,是的,您做错了。
另外,我回应Mr. Zimmerman's comment;这可能很容易成为大写问题。
response = {
PoList: [
{
foo: 'bar',
Status: 'edited'
},
{
foo: 'baz',
Status: 'Not edited'
},
{
foo: 'barbar',
Status: 'Not edited'
}
]
};
for (var x = 0; x < response.PoList.length; x++) {
if (response.PoList[x].Status === 'Not edited') {
response.PoList[x].StatusNum = 1;
} else {
response.PoList[x].StatusNum = 3;
}
}
答案 1 :(得分:0)
检查是否存在response.PoList[x].Status
:
for (var x = 0; x < response.PoList.length; x++) {
if (response.PoList[x].Status && response.PoList[x].Status == 'Not edited') {
response.PoList[x].StatusNum = 1;
} else {
response.PoList[x].StatusNum = 3
}
}
答案 2 :(得分:0)
你在这里遗漏了一个分号response.PoList[x].StatusNum = 3
。除此之外,我认为所提供的代码没有任何问题,因此不能在响应中设置PoList
的变量Status
。