태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

달력

08

« 2017/08 »

  •  
  •  
  • 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
  • 30
  • 31
  •  
  •  
2010.04.29 21:11

JavaScript의 개체에 대해서 분류없음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]

신고
Posted by wafe

댓글을 달아 주세요

javascript로 ASP.NET AJAX의 UpdatePanel 컨트롤을 업데이트 시키는 방법을 따라하면 일반적인 경우에는 잘 된다.

그러나 마스터 페이지를 사용하는 페이지에 UpdatePanel을 넣은 경우에는 다음과 같이 __doPostBack 했을 때,

__doPostBack('<%= UpdateUpanelBtn.ClientID %>', '');

PostBack은 발생하지만 버튼 이벤트 핸들러에 들어가지를 않아서 원하는대로 화면이 갱신되지 않는다.

왜 잘 안될까 다른 방법을 써서 마구 삽질하다가, 우연히 ClientID 대신 UniqueID로 바꿔봤는데 잘 된다는 것을 알게됐다.

사실 Page_Load 이벤트 같은데 브레이크 포인트를 걸어놓고, 비동기 PostBack이 발생했을 때 Request.Form 컬렉션을 잘 살펴보면, 컬렉션에 들어가 있는 문자열들은 모두 컨트롤의 ClientID가 아니라 UniqueID 라는 것을 알 수 있다.

신고
Posted by wafe

댓글을 달아 주세요

2009.01.24 13:09

WSH로 네이버 캐스트 정보 얻기 분류없음2009.01.24 13:09

네이버 캐스트는 JSON으로 정보를 전해주고 있다. 의미를 알 수 없는 필드들이 많지만, 썸네일 주소나 링크 주소 정도는 알아볼 수 있다.

Windows Script Host 스크립트를 javascript로 작성하여 실행하면 쉽게 JSON 정보를 분석할 수 있다.

  1. <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

 

얻어온 JSON 데이터를 javascript 개체로 만들 때 eval() 함수를 사용하는데, 받은 문자열을 그대로 사용하면 세미콜론이 필요하다는 에러가 났다. 괄호로 묶어서 쓰니까 잘 된다. 왜 이런지는 아직 잘 모르겠다.

 

이 글은 스프링노트에서 작성되었습니다.

신고
Posted by wafe

댓글을 달아 주세요

  1. 도아 2009.02.09 18:04 신고  댓글주소  수정/삭제  댓글쓰기

    저는 네이버에는 도통 관심이 없어서 오픈캐스트도 통 관심이 가지 않더군요.

    • wafe 2009.02.13 01:30 신고  댓글주소  수정/삭제

      지식인의 서재 같은 양질의 콘텐트를 제공해주거나 하는 면은 좋은 것 같습니다. 네이버 같은 거대 기업에서 돈을 쏟아부어서 이런 좋은 일 정도는 해줘야죠. ^^