2011-05-31 80 views
0

所以,再次壁虎的东西,那即时通讯使用这个脚本来填充列表框JSON根据JSONLint是有效的,而像这样的IM USIG代码放置解析数据阵列JavaScript数组是未定义

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

现在,它使用此代码

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

那么AKE这个码的地方它得到吨的一个点,其中通过阵列CTYPE余环路(看我联供参考JSON文件)的一个在页面上的列表框。然而,这个列表框填充的值是“undefined”,只有一个“undefined”(应该有三个选项,一个标题) 对于即时通讯的javascript文件去here 这个页面是“http:// texaslizardconnection.com/#newavailable” 关于此JavaScript小信息:

PDATA [0]〜PDATA [2]应该包含阵列
PDATA [2]应该conatain多个阵列
PDATA [0] == PDATA [ “CTYPE”]
PDATA [1] == PDATA [ “STYPE”]
PDATA [2] == PDATA [ “lizlist”]

回答

1

替换为您的循环:

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

你通过CTYPE对象的每个属性循环。

0

当你在ctype上循环时,你忘记指定循环遍历cType属性。

这工作:

for(var i in ctype.cType) { 
    lbt += "<option value=\""+ctype.cType[i].id+"\">"+ctype.cType[i].type+"</option>"; 
} 
0
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 
}