2008/11/06 13:52
Study/Web
가끔 JOSN으로 서버와 데이터를 주고 받다 보면
하나의 request에 여러 데이터?를 받게되는 경우가 있다.
request를 http://xxx.xxx.xxx/xxx.xxx?yy=y(GET 방식. POST나 다른 방식으로 넘겨줘도 무방해요~^^) 넘겨주면
서버에서는 요렇게~ 참고로 아래는 php임돠ㅋ
$oResponseJsonData = '{ "REQUEST":{"REQ_DATA1":"data1", "REQ_DATA2":"data2"}, "RESULT_LIST":[';
for($i=0; $i<$nCount; $i++) {
if($i == ($nCount-1))
$oResponseJsonData .= '{"RESULT":{"RST_DATA1":"data1", "RST_DATA2":"data2", "RST_DATA3":"data3", "RST_DATA4":"data4"}}';
else
$oResponseJsonData .= '{"RESULT":{"RST_DATA1":"data1", "RST_DATA2":"data2", "RST_DATA3":"data3", "RST_DATA4":"data4"}},';
}
$oResponseJsonData .= '] }';
클라이언트로 넘겨주게 된다.
그렇다고 서버에서 꼭 저렇게 넘겨주는 것은 아니다. 그냥 한 예일 뿐이며, 지극히 내 맘... -ㅅ-;;
넘겨주는 형식이 중요할 뿐이므로 패쑤~~
여기서 '[', ']' 이게 중요!!!!!! 그래야 각 하위 엘리먼트(여기서는 각 RESULT 부분)에 접근할 수 있다.
'{ }' 이렇게 감싸면 제일 마지막의 엘리먼트만 접근이 가능하다는..
'{ }' 요게 혹시 가능하다면 저한테 코멘트 좀....;;
서버에서 넘겨주는 데이터의 구성은 아래와 같이 된다.
{ "REQUEST":{ "REQ_DATA1":"data1", "REQ_DATA2":"data2" },
"RESULT_LIST":[
{"RESULT":{ "RST_DATA1":"data1", "RST_DATA2":"data2", "RST_DATA3":"data3", "RST_DATA4":"data4" }},
{"RESULT":{ "RST_DATA1":"data1", "RST_DATA2":"data2", "RST_DATA3":"data3", "RST_DATA4":"data4" }},
{"RESULT":{ "RST_DATA1":"data1", "RST_DATA2":"data2", "RST_DATA3":"data3", "RST_DATA4":"data4" }}
]
}
이걸 어떻게 클라이언트에서 사용해야 될까?
우선 Ajax의 reponseText를 이용해 받게된다면 eval(text를 object 형식으로 변환하여 사용하기 위해)을 이용하자.
다른 방식도 있는데 parseJSON()을 사용해도 된다. parseJSON의 역은 toJSONString()으로 object를 text로 변환해준다.
실제 예를 함 보자. text를 object로 변환 ㄱㄱㅆ~~
var sResponseVal = Object.responseText;
var oVal = eval("(" + sResponseVal + ")");
이 상태에서 REQUEST의 REQ_DATA2에 접근할려면
oVal.REQUEST.REQ_DATA2 이렇게 접근하면 된다 ^^
RESULT_LIST의 3번째 RESULT의 RST_DATA3에 접근하려면
oVal.RESULT_LIST[3].RESULT.RST_DATA3 이렇게 ㅎ
간단하다. 나머진 각자 입맛에 맞게 바꾸면 끝~~
'Study > Web' 카테고리의 다른 글
| [PHP]배열을 상수로 사용하기 (0) | 2009/03/07 |
|---|---|
| [JSON]클라이언트에서 JSON 데이터 사용하기 (0) | 2008/11/06 |
| [AJAX]timeout (1) | 2008/11/05 |
| [PHP] 가변변수에 대해서 (2) | 2008/10/24 |