Массив JavaScript от разбора JSON не определен - PullRequest
0 голосов
/ 31 мая 2011

Итак, еще раз, геккон, JSON , который я использую в этом сценарии для заполнения списка, действителен в соответствии с JSONLint, и я использую такой код, чтобы поместить проанализированные данные в массивы

pdata = jQuery.parseJSON(data);
ctype = pdata[0];
stype = pdata[1];
lizlist = pdata[2];

теперь он получает одну точку, где я перебираю массив ctype (посмотрите на файл JSON, который я связал для справки), используя этот код

lbt = "";
for(var i in ctype) {
lbt += "<option value=\""+ctype[i].id"\"+>"+ctype[i].type+"</option>"
}

затем этот код помещается в список на странице. Однако этот список заполняется значением «undefined» и только одним «undefined» (должно быть три параметра, один заголовок) для файла javascript, о котором я говорю, иди здесь страница, на которой это находится, "http://texaslizardconnection.com/#newavailable" Небольшая информация об этом javascript:

pdata [0] ~ pdata [2] должна содержать массивы
pdata [2] должна содержать больше массивов
pdata [0] == pdata ["cType"]
pdata [1] == pdata ["sType"]
pdata [2] == pdata ["lizlist"]

Ответы [ 3 ]

1 голос
/ 31 мая 2011

замените ваш цикл на:

for (var i=0;i< ctype.length; i++)

Вы просматриваете каждое свойство объекта ctype.

0 голосов
/ 31 мая 2011
var pdata = jQuery.parseJSON(data);
if (!pdata.cType) {
  alert('fail, cType is null');
} else if (!pdata.sType) {
  alert('fail, sType is null');
} else {
  // cType is an array!
  lbt = "";
  for (var i=0, item; item = pdata.cType[i]; i++) {
    lbt += "<option value=\""+item.id+"\">"+item.type+"</option>";
  }
  // and so on
}
0 голосов
/ 31 мая 2011

Когда вы зацикливаетесь на ctype, вы забыли указать, что зацикливаться на свойстве cType.

Это работает:

for(var i in ctype.cType) {
    lbt += "<option value=\""+ctype.cType[i].id+"\">"+ctype.cType[i].type+"</option>";
}
...