迭代这个响应

时间:2011-07-13 14:40:53

标签: javascript

{
  'lastChangedName': null'Caption': 'Adhesive Tape',
  'CreateByID': 0,
  'DateOnSet': '02/10/2011',
  'Note': 'Currently participating in Allergy shots to resolve this',
  'Reaction': 'skin rash',
  'SectionDescription': 'Allergy List',
  'HistoryItemID': 1831,
  'CurrentInDrFirst': 0,
  'CreateDate': '/Date(1297674300000-0500)/',
  'Code': '3746',
  'PL': '1',
  'Problem': {
    "LastChargedByUserID": 0,
    "LastChargedDate": null,
    "ProblemStatus": 1003,
    "DateResolved": "12\/2\/11",
    "PatientID": 0,
    "ProblemID": 1330
  },
  'CategoryDescription': null,
  'CategoryID': 0,
  'CodeSystem': 'FDBDRUG',
  'SectionID': 3,
  'LastChangedID': 0,

},
{
  'lastChangedName': null'Caption': 'Cats',
  'CreateByID': 0,
  'DateOnSet': '6/4/1997',
  'Note': '0',
  'Reaction': 'Sneezing',
  'SectionDescription': 'Allergy List',
  'HistoryItemID': 1925,
  'CurrentInDrFirst': 0,
  'CreateDate': '/Date(1299176220000-0500)/',
  'Code': '',
  'PL': '1',
  'Problem': {
    "LastChargedByUserID": 0,
    "LastChargedDate": null,
    "ProblemStatus": 1002,
    "DateResolved": null,
    "PatientID": 0,
    "ProblemID": 1331
  },
  'CategoryDescription': null,
  'CategoryID': 0,
  'CodeSystem': '',
  'SectionID': 3,
  'LastChangedID': 0,

}

这是我得到的回复,我想在文本框中迭代并打印出标题值......

for each(var item in response) {
          alert(item.caption)
}

这只会打印出第一个标题。

2 个答案:

答案 0 :(得分:1)

引用的那个响应很尴尬,因为你有一系列用逗号分隔的匿名对象(你可能认为它是无效的,但它不是,它只是无益的)。 (假设您修复了symcbean在注释中指出的'lastChangedName': null'Caption'内容;我认为这是一个复制粘贴错误。)我认为必须有更多内容,而不是引用的内容。 (也许是在[]内,使它成为一个对象数组?)

但一般来说:是的,for..in(不是for each,只是for)用于循环对象属性的名称,一旦你有了每个名字,您可以使用[]表示法来检索属性值。

因此,如果您可以获得对每个对象的引用,则可以使用for..in遍历属性。

示例:

var obj, name;

obj = {
    foo: "bar",
    answer: 42
};

for (name in obj) {
    console.log(name + ": " + obj[name]);
}

将显示

foo: bar
answer: 42

answer: 42
foo: bar

循环中属性名称的顺序没有为像示例中的通用对象指定。 (它是为Array个对象指定的:对于Array个对象,它保证了它们具有纯数字名称的任何属性 - 例如数组索引 - 将按数字顺序迭代。[即使这样,如果你有非 - 数组上的数字属性,未定义它们是在数字之前,之后还是混合在一起。])

答案 1 :(得分:1)

尝试:

for(var item in response) {
    alert(response[item].caption)
}