최근 자바스크립트를 공부하고 있는데요.
방탄AJAX라는 책을 보고 있는데, 여기에는 yahoo로 하는 방법이 있어서 저는 daum으로-_-; prototype을 이용해서 더욱 간결하게(별로 간결하지않아-_-) 만들어봤습니다.
[code]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head id='headId'>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script src="lib/prototype/prototype.js" type="text/javascript"></script>
<script type="text/javascript" src="daumSearch.js"></script>
</head>
<body>
<h1>Daum Blog Search!</h1>
<form onsubmit="searchDaum(this.query.value); return false;">
<fieldset>
<label>Search for</label>
<input type="text" name="query" />
<input type="submit" value="검색" />
</fieldset>
</form>
<div id="results"></div>
</body>
</html>
[/code]
HTML은 간단합니다. prototype라이브러리를 선언하구요. 이제 작성할 daumSearch.js파일을 선언했군요.
그리고, form부분에서는 query라는 name을 가진 input에 쿼리를 날리면, searchDaum이라는 메소드를 호출하게 되어있습니다.
daumSearch.js를 보도록 합시다.
[code]
function getScript(url)
{
var scripttag = new Element("script",{
"type": "text/javascript",
"src": url});
var head = $$("head");
head[0].insert(scripttag);
}
function searchDaum(query)
{
var url = "http://apis.daum.net/search/blog?"
url += "q=" + encodeURIComponent(query);
url += "&result=10";
url += "&start=1";
url += "&output=json";
url += "&apikey=다음에서 apikey발급받고 넣으세요";
url += "&callback=parseResponse";
getScript(url);
}
function parseResponse(data)
{
var children;
var results = $("results");
while (results.hasChildNodes())
{
results.removeChild(results.lastChild);
}
for (var i=0; i<data.channel.result; i++)
{
var title = data.channel.item[i].title;
var summary = data.channel.item[i].description;
var url = data.channel.item[i].link;
var link = new Element("a", {"href":url, "target":"_blank"}).update(title);
var header = new Element("h2").insert(link);
var para = new Element("p").update(summary);
results.insert(header);
results.insert(para);
}
}
[/code]
getScript함수는 해당 url을 head부분에 자바스크립트 선언으로 추가를 하는 역할을 합니다. json은 자바스크립트이기 때문에 페이지에 가져올 수 있습니다. daum검색은 output을 json으로 리턴이 되기 때문에 가능합니다.
그러면 json객체를 사용할 수 있습니다.
callback함수는 parseResponse입니다. 이 함수는 그냥 data부분에 json으로 받게 되는데 그것을 그냥 파싱만 해줘서 엘리먼트를 생성해서 results div에다가 엘리먼트를 추가하는 식으로 되어있습니다.
이상입니다 ^^