2011-10-24 42 views
0

我有调用WCF服务并向客户端返回JSON字符串的代码。下面是我试图用来解析JSON的JavaScript函数,但无法弄清楚如何遍历它。需要帮助遍历JavaScript中的JSON对象

下面是函数

loadDropDown: function(result, ddl, defaultItem) { 
    var _data = result.get_object(); 
    //Sys.Serialization.JavaScriptSerializer.deserialize(result, true); 

    this.clearDropDown(ddl); 
    this.createOption(ddl, defaultItem, ''); 
    for (var i = 0; i < _data.length; i++) { 
     var _item = _data[i]; 
     var _option = this.createOption(ddl, _item.Text, _item.Value); 
    } 
    ddl.disabled = false; 
} 

这里是JSON

{ 
    "d": "[{\"Attributes\":{\"Keys\":[],\"Count\":0,\"CssStyle\":{\"Keys\":[],\"Count\":0,\"Value\":null}},\"Enabled\":true,\"Selected\":false,\"Text\":\"Lexus\",\"Value\":\"Lexus\"},{\"Attributes\":{\"Keys\":[],\"Count\":0,\"CssStyle\":{\"Keys\":[],\"Count\":0,\"Value\":null}},\"Enabled\":true,\"Selected\":false,\"Text\":\"Acura\",\"Value\":\"Acura\"}]" 
} 

为什么这不工作有什么建议?注意:我没有在解决方案中使用jquery。

回答

1

您不应该生成该json。相反,你应该输出

{ 
    "d": [{"Attributes":{"Keys":[],"Count":0,"CssStyle":{"Keys":[],"Count":0,"Value":null}},"Enabled":true,"Selected":false,"Text":"Lexus","Value":"Lexus"},{"Attributes":{"Keys":[],"Count":0,"CssStyle":{"Keys":[],"Count":0,"Value":null}},"Enabled":true,"Selected":false,"Text":"Acura","Value":"Acura"}] 
} 

没有理由把它在一个JSON对象之前,JSON转换为字符串(行情从"d"值去掉)!只需将json直接插入即可。

+0

如何获取Text和Value属性? – TampaRich

+0

这是我从WCF服务中获取JSON的格式 – TampaRich

+0

@TampaRich:这一切似乎都归结为WCF的工作原理。您应该将其添加为标签。 – Eric

0

在使用它作为javascript数组之前,您需要做eval(_data)。

为前:

var _rawdata = result.get_object(); 
var _data = eval(_rawdata); 
//Sys.Serialization.JavaScriptSerializer.deserialize(result, true); 

this.clearDropDown(ddl); 
this.createOption(ddl, defaultItem, ''); 
for (var i = 0; i < _data.length; i++) { 
    var _item = _data[i]; 
    var _option = this.createOption(ddl, _item.Text, _item.Value); 
} 
ddl.disabled = false;