티스토리 뷰

결과 포맷이 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 &"]}}")
%>
댓글
  • 프로필사진 Favicon of http://smallhouse.kr BlogIcon Sup3r S41y4n 으으으. 아무리 찾아봐도 jquery 로 외부 사이트 내용은 못긁어오는건가요? 거의다 서버스크립트언어에 의존하는데 ㅠ.ㅠ php 같은걸 쓰면 안되는 상황이 생겨서요 ㅠㅠ

    여러가지 해봤지만 로컬에선 동작하나, 서버에선 동작하지 않는 기희한 현상도 발생하구...

    그나저나.... 상당히 미인이십니다....으흐,흫.ㅎ.흐흐흫ㅎ
    2011.07.14 01:08
  • 프로필사진 Favicon of https://itzone.tistory.com BlogIcon VoidNoble 공허공자 YQL 활용하시면 처리 가능하리라 생각됩니다. http://developer.yahoo.com/yql/ 2011.07.18 16:44 신고
댓글쓰기 폼
Total
818,296
Today
119
Yesterday
305
«   2020/02   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
글 보관함