'Dojo'에 해당되는 글 1

  1. 2008.07.17 JSONP with dojo (4)

JSONP with dojo

cross domain 룰때문에 다른 외부 서비스에서 데이터를 가져올 수 없을 경우,
JSONP를 사용하여 javascript에서 바로 외부 데이터를 가져올 수 있다.

다음은 dojo를 사용해서 client side, 즉 javascript에서 외부 데이터를 호출하는 방법이다.
	dojo.require("dojo.io.script");
dojo.io.script.get({
callbackParamName : "jsoncallback",
url: "www.example.test?getList=1",
load : function(response,ioArgs){
console.log(response);
return response;
},
error: function(response, ioArgs){
console.log(response);
return response;
},
timeout: 100000,
preventCache: true

});
JSONP를 사용하기 위해서 callbackParamName을 지정해 줘야 한다. 이 callbackParamName은 데이터를 제공하는 사이트, 위의 예에서는 "www.example.test" 에서 제공한다. 위의 예제 내용을 보면, 지정된 url로 request를 보내면, 서버는 데이터를 "load"에 지정된 function에 response parameter를 통해서 전달한다. response의 데이터 형식은 json이 된다. 위 예제에서는 getList를 요청했고, list가 "response"에 json으로 담겨져 있게 된다.

다음은 server side 에서 데이터를 전달하는 예이다. (example.test?getList=1)
Java Servlet 으로 작성하였다.(Servlet의 doGet 메서드)
String jsoncallback = request.getParameter("jsoncallback");
response.setContentType("text/javascript");
String data = "{'error':'errormsg','list':'[{"1":"aaa"},{"2":"bbb"}]'}";
String res = jsoncallback+"("+data +");";
response.getWriter().println(res);
Server Side에서는 request에서 넘겨주는 특정 parameter 값과 전달해 줄 data를 json으로 만들어서 response 해준다. 위의 예제에서 특정 parameter의 Name은 "jsoncallback" 값이다. 따라서 Server Side 는 Client 에게 request 할 때 이 parameter name(ex>jsoncallback)으로 값을 넘겨 달라고 알려줘야 한다. 위의 client 예제를 보면, 넘겨줘야 하는 parameterName을 알고 있어서, dojo.io를 사용하면서 callbackParamName의 인자로 설정하였다. (param의 value는 dojo가 알아서 셋팅한다). Mash up이나 기타 다른 이유로 Open API를 제공하는 사이트는 request URL 과 함께 parameterName을 공지하고 있다. 예를 들면 google에서는 "c"를 많이 사용하고, flickr 는 "jsoncallback"를 많이 사용한다.
신고

'개발' 카테고리의 다른 글

Maven Getting Started Guide(1)  (0) 2008.11.07
Logging  (0) 2008.08.12
JSONP with dojo  (4) 2008.07.17
Top 10 Mistakes when building Flex Applications  (1) 2008.04.23
Struts2 - struts.xml 에서 설정해야 할 것  (2) 2008.04.12
Struts2  (0) 2008.04.11
TRACKBACK 0 Comment 4

티스토리 툴바