2011-10-24 9 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を生成すべきではありません。代わりに、あなたはJSONオブジェクトにそれを置く前に、文字列にJSONに変換する理由はありません

(引用符は"d"値から削除)

{ 
    "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をまっすぐに入れてください。

+0

テキストと値のプロパティはどうやって取得できますか? – TampaRich

+0

これはWCFサービスからJSONを取得する形式です – TampaRich

+0

@TampaRich:これはすべてWCFの仕組みになります。タグとして追加する必要があります。 – Eric

0

javascript配列として使用する前に、eval(_data)を実行する必要があります。 EX用

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; 
0

あなただけeval()オブジェクトのことができるように(またはJSON parsing from Crockfordを使用)と、通常のオブジェクト表記であなたのプロパティにアクセスする必要があります。しかし、まず識別子をエスケープする必要があるかもしれません。

関連する問題