관리 메뉴


Kinesis´s Open Document

jQuery Ajax 사용시 data 에 json형 array 또는 object 형 값 전달시 문제 본문

MEMO/기술 자료/Ajax

jQuery Ajax 사용시 data 에 json형 array 또는 object 형 값 전달시 문제

Kinesis 2012. 9. 3. 16:47

jQuery Ajax 를 이용하여 비동기식 통신을 사용하게 되는 경우 중에는 JSON 형태로 data를 주고 받는 경우가 있다. (아니, 사실상 대게 가장 빈번하게 쓰는 형태가 JSON 형태가 아닌가 싶다.)

 

이 jQuery Ajax 가 기타 서버측 스크립트 언어에서는 어떤식으로 활용하는지 모르겠지만, ASP.NET 에서 asmx 의 Web Service([WebMethod]) 과 데이터를 주고 받는 연동처리를 들어가게 되면, $.ajax() 의 인자값의 data 가 String 형태를 가져야만 정상적인 WebMethod 호출이 이루어진다.

 

요컨데

 

data : { test : [1,2,3,4,5] }

 

형태로는 정상 호출이 되지 않고 error 이 뜨게 되나, 같은 값으로

 

data : '{ "test" : [ "1", "2", "3", "4", "5" ] }'

 

이와 같은 형태가 되면 정상적인 배열형태의 인자값으로 전달이 된다.

 

이 부분을 해결하기 위한 가장 쉬운 방법은 data 를 전달시에 JSON.stringify() 를 이용하는 것이다.

 

data : JSON.stringify({ test: [1,2,3,4,5] });

 

이와 같은 형태로 말이다. 그런데 이녀석도 문제가 있다. 빌어먹을 인터넷 익스플로러 호환성 문제로 IE8 미만의 버젼에서는 지원을 하지 않는다는 것이다. 그렇다고 가변적으로 변하는 배열(Array)나 객체(Object)를 수작업으로 " " 로 싸넣을 수도 없는 노릇이 아닌가. 결과적으로 해결 방안은 JSON.stringify() 과 같은 함수를 생성하여 대체사용을 하거나, 브라우저의 버젼을 체크하여 버젼에 따라 실행되는 함수 부분에 차등을 두는 방법 밖에는 딱히 이렇다 할 대안이 없다.

 

업무 소프트웨어가 추가적인 프로그램의 설치가 필요 없는 웹 서비스 환경으로 넘어가고 있어서 회사에서 프로젝트를 진행하면서 작업을 하고 있지만, 역시 항상 발목을 붙잡는 것은 국내 브라우저 사용율의 90%가 넘는 인터넷 익스플로러가 보다 나은 웹 서비스 환경으로의 진화를 막고 있는 것처럼만 느껴진다.


Comments