티스토리 뷰

결과 포맷이 XML만 지원되길래
jQuery $(xml).find('item').each(); 으로 파싱하여 해보려 했으나
Cross 뭐시기 문제, 응답페이지(recmd.asp)의 첫번째 줄 오류 등이 발생하길래
XML을 JSON으로 변환하고 반환되도록 하여 처리함.

네이버측의 XML 반환을 JSON 형식으로 변환하는데
http://www.thomasfrank.se/xml_to_json.html
의 온라인 도구를 사용하여 형식 잡음

* 사용하는 페이지 인코딩 euc-kr
recmd.htm
<script language="javascript" type="text/javascript">
//<![CDATA
	var url = 'recmd.asp';
	var q = encodeURIComponent("yg");
	$(function(){
		$.getJSON(url, { query:q }, function(json){
			if(!json) { $('#result').text('응답없음'); return false; }
			var str = "";
			var cnt = json.result.item.length;
			for(var i=0; i<cnt; i++) {
				str += "<li>"+ json.result.item[i] +"</li>
";
			}
			$('#result').html(str);
		});
	});
//]]>
</script>

<ul id="result">
</ul>

* 네이버측 인코딩 utf-8
recmd.asp
아래에서 {API KEY} 부분은 부여받은 API KEY로 대체할것!
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<% '// 네이버 추천검색어 API
Session.CodePage = "65001"
Response.CharSet = "UTF-8"
Response.addHeader "pragma", "no-cache"
Response.addHeader "cache-control", "private"
Response.AddHeader "Expires","0"
Response.CacheControl = "no-cache"
Response.ContentType = "application/json"

Dim query : query = Request.Querystring("query")
If query = "" Then Response.write(""): Response.End

Dim key : key = "{API KEY}"
Dim target : target = "recmd"
Dim getUrl : getUrl = "http://openapi.naver.com/search"

getUrl = getUrl &"?key="& key &"&target="& target &"&query="& query

Set objHTTP = CreateObject("Microsoft.XMLHTTP")
objHTTP.Open "get", getUrl, False
objHTTP.Send
xmlData = objHTTP.responseText
if xmlData="" then Response.write("Naver url is not available"): Response.End
Set objHTTP = Nothing

Set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = "False"
xmlDoc.loadXML(xmlData)
Set colNodes = xmlDoc.selectNodes("/result/item")
if colNodes.length = 0 then Response.write("The item does not exists."): Response.End
Set xmlDoc = Nothing

json = ""
For Each objNode in colNodes
   json = json &""""& objNode.text &""","
Next
If Len(json) = 0 Then Response.write("XML parsing is not available"): Response.End
json = Left(json, Len(json)-1)
Set colNodes = Nothing

Response.Write("{""result"":{""item"":["& json &"]}}")
%>
댓글