2011-05-31 99 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 
}