'JavaScript'에 해당되는 글 3건
- 2010/04/29 JavaScript의 개체에 대해서
- 2009/03/13 javascript로 UpdatePanel 업데이트 시키기(Master Page)
- 2009/01/24 WSH로 네이버 캐스트 정보 얻기 (2)
2010/04/29 21:11
JavaScript에서 Silverlight 쪽의 메서드를 호출할 때, C# Dictionary 형식을 전달하려면 어떻게 해야 하는지에 대해서 경민 씨가 자이닉스 개발부 블로그에 글을 써 주었다. (Silverlight 함수를 Javascript에서 호출) 좀더 자세한 내용은 MSDN의 Constructing Managed Types from JavaScript라는 문서를 참고하면 도움이 될 것이다.
JavaScript에서 createManagedObject 메서드를 이용해서 C# Dictionary<T, T> 처럼 관리되는 타입을 생성하면, JavaScript 개체처럼 쓸 수 있는 래퍼를 통해서 JavaScript 쪽에 노출된다. 그렇기 때문에 키가 string 타입인 C# Dictionary 만 사용할 수가 있다.
실제로 JavaScript의 개체(Object)는 키가 문자열인 사전 데이터 타입이라고 말할 수가 있다. 아래처럼 currentTime 이라는 멤버 변수를 사용하는 예제 코드가 있다고 하자.
[code js]
var userObject = new Object();
userObject.currentTime = new Date();
alert(userObject.currentTime);
[/code]아래 코드는 위에서 제시한 코드와 완전히 동일한 의미를 지닌다. 즉, C# 등의 언어에서 키가 문자열인 사전 데이터 타입을 쓰는 문법과 동일하다는 것을 알 수가 있다.
[code js]
var userObject = new Object();
userObject["currentTime"] = new Date();
alert(userObject["currentTime"]);
[/code]참고로 JavaScript 개체를 한 번에 초기화하는 방법도 있는데, 이런 표현 형식을 JSON 이라고 한다.
[code js]
var userObject = { "currentTime" : new Date() };
alert(userObject.currentTime);
[/code]2009/03/13 15:44
javascript로 UpdatePanel 업데이트 시키기(Master Page) 분류없음2009/03/13 15:44
javascript로 ASP.NET AJAX의 UpdatePanel 컨트롤을 업데이트 시키는 방법을 따라하면 일반적인 경우에는 잘 된다.
그러나 마스터 페이지를 사용하는 페이지에 UpdatePanel을 넣은 경우에는 다음과 같이 __doPostBack 했을 때,
__doPostBack('<%= UpdateUpanelBtn.ClientID %>', '');
PostBack은 발생하지만 버튼 이벤트 핸들러에 들어가지를 않아서 원하는대로 화면이 갱신되지 않는다.
왜 잘 안될까 다른 방법을 써서 마구 삽질하다가, 우연히 ClientID 대신 UniqueID로 바꿔봤는데 잘 된다는 것을 알게됐다.
사실 Page_Load 이벤트 같은데 브레이크 포인트를 걸어놓고, 비동기 PostBack이 발생했을 때 Request.Form 컬렉션을 잘 살펴보면, 컬렉션에 들어가 있는 문자열들은 모두 컨트롤의 ClientID가 아니라 UniqueID 라는 것을 알 수 있다.
댓글을 달아 주세요
2009/01/24 13:09
WSH로 네이버 캐스트 정보 얻기 분류없음2009/01/24 13:09
네이버 캐스트는 JSON으로 정보를 전해주고 있다. 의미를 알 수 없는 필드들이 많지만, 썸네일 주소나 링크 주소 정도는 알아볼 수 있다.
Windows Script Host 스크립트를 javascript로 작성하여 실행하면 쉽게 JSON 정보를 분석할 수 있다.
- <job>
<script languge="JScript">
// 네이버 지식인의 서재 정보 얻기
// file: nav_intelli.wsf
var xmlhttp = WScript.CreateObject("Msxml2.XMLHTTP");
xmlhttp.open("GET", "http://www.naver.com/include/navercast/naverCastToday.json.09", false/*bAsync*/);
xmlhttp.send();
var response_text = xmlhttp.responseText;
var navcast = eval('(' + response_text + ')');
var shelves = navcast.data[4].intellctual[1];
var result = "";
for (var i = 0; i < shelves.length; ++i) {
result += "href=" + shelves[i][2] + "\r\n";
result += "src=" + shelves[i][3] + "\r\n";
}
WScript.StdOut.Write(result);
//var fso = WScript.CreateObject("Scripting.FileSystemObject");
//tf = fso.CreateTextFile("response.txt", true/*overwrite*/, true/*unicode*/);
//tf.Write(response_text);
//tf.Close();
</script>
</job>
커맨드라인에서 실행해본 결과.
Microsoft (R) Windows Script Host 버전 5.7
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
href=http://book.naver.com/bookshelf/story.nhn?startmonth=200901
src=http://static.naver.com/www/u/2008/1231/nmms_234746181.jpg
href=http://book.naver.com/bookshelf/story.nhn?startmonth=200812
src=http://static.naver.com/www/u/2008/1231/nmms_2344792.jpg
href=http://book.naver.com/bookshelf/story.nhn?startmonth=200811
src=http://static.naver.com/www/u/2008/1231/nmms_23353632.jpg
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
href=http://book.naver.com/bookshelf/story.nhn?startmonth=200901
src=http://static.naver.com/www/u/2008/1231/nmms_234746181.jpg
href=http://book.naver.com/bookshelf/story.nhn?startmonth=200812
src=http://static.naver.com/www/u/2008/1231/nmms_2344792.jpg
href=http://book.naver.com/bookshelf/story.nhn?startmonth=200811
src=http://static.naver.com/www/u/2008/1231/nmms_23353632.jpg
얻어온 JSON 데이터를 javascript 개체로 만들 때 eval() 함수를 사용하는데, 받은 문자열을 그대로 사용하면 세미콜론이 필요하다는 에러가 났다. 괄호로 묶어서 쓰니까 잘 된다. 왜 이런지는 아직 잘 모르겠다.
이 글은 스프링노트에서 작성되었습니다.



댓글을 달아 주세요