2011-10-24 3 views
0

WCF 서비스를 호출하고 클라이언트에 JSON 문자열을 반환하는 코드가 있습니다. 아래 JSON 구문 분석하는 데 사용하려고하는 자바 스크립트 함수를 있지만 그것을 통과하는 방법을 알아낼 수 없습니다. 여기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

텍스트 및 값 속성은 어떻게 만듭니 까? – TampaRich

+0

이것은 WCF 서비스에서 JSON을 가져 오는 형식입니다. – TampaRich

+0

@TampaRich :이 모든 것이 WCF 작동 방식에 관한 것 같습니다. 태그로 추가해야합니다. – Eric

0

자바 스크립트 배열로 사용하기 전에 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; 
0

당신은 eval() 객체에 수 (또는 JSON parsing from Crockford 사용) 일반 객체 표기법에 속성에 액세스해야합니다. 먼저 식별자를 이스케이프 처리해야 할 수도 있습니다.

관련 문제