블로그 이미지
Don't Stop
angelyr

Recent Post

Recent Comment

Archive

calendar

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
  • total
  • today
  • yesterday

'일반인 라이브'에 해당되는 글 2건

  1. 2008.10.11 Ajax (prototype)을 이용한 XML 통신
  2. 2008.10.11 Vi 단축키

php와 Javascript를 이용하여 XML 통신을 하는 법은 이미 많은 예시가 있다.
이 글은 공부목적으로 개인적으로 정리한 것이다.

Javascript에 있는 XHR(XMLHttpRequest)를 이용하여 php에서 XML을 동적으로 받는 프로그램을 간단하게 만들었다.

특별히 Javascript에서 XHR을 구현을 위해서는 각종 브라우져마다 다르게 만들어야하는 번거로움이 있어서 나는 prototype.js 라는 Javascript 프레임워크에서 제공하는 XHR 기능을 이용했다.


아주 쉬운 예제이기 때문에 자세한 설명은 생략한다.(사실 귀찮기 때문에.. ㅋ)

index.html (Language : html4strict)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<title>prototype을 이용한 Ajax 테스트</title>
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript">
    function request(group)
    {
        //alert(group);
        new Ajax.Request(
            "http://192.168.0.200/~jidolstar/testXML.php",
            {
                asynchronous:true,
                method:"get",
                parameters: {"group": group} ,
                onSuccess:function(request)
                {
                    var xmlData = request.responseXML;
                    var members = new Array();
                    var memberNude  = xmlData.getElementsByTagName("member");
                    var nameNode = xmlData.getElementsByTagName("name");
                    var companyNode = xmlData.getElementsByTagName("company");
                    var telnumNode = xmlData.getElementsByTagName("telnum");
                    var memberCount = memberNude.length;
                    for ( i=0; i < memberCount; i++ )
                    {
                        var name    = nameNode[i].childNodes[0].nodeValue;
                        var company = companyNode[i].childNodes[0].nodeValue;
                        var telnum  = telnumNode[i].childNodes[0].nodeValue;
                        members.push( {"name":name, "company":company, "telnum":telnum} );
                    }

                    var str="";
                    for ( i=0; i < members.length; i++ )
                    {
                        str += "<H1>member : " + (i+1) + "</H1>";
                        str += "<div>name : " + members[i].name + "</div>";
                        str += "<div>company : " + members[i].company + "</div>";
                        str += "<div>telnum : " + members[i].telnum + "</div>";
                    }
                    //document.getElementById["divResult").innerHTML = str;
                    $("divResult").innerHTML = str;

                       
                },
                onFailure:function()
                {
                    $("divResult").innerHTML = "실패";
                }
            });
    }

</script>
</head>
<body onload="request(document.frm.groupSelect.value)" >
    <form name="frm">
        <select name="groupSelect" onchange="request(document.frm.groupSelect.value)">
            <option value="1">1 Group</option>
            <option value="2">2 Group</option>
        </select>
    </form>
    <div id="divResult"></div>
</body>
</html>




 

textXML.php (Language : php)
<?php
$group = $_GET[group];
header("Content-type: text/xml;charset=utf-8");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");

echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";

switch($group)
{
    case 1:
        $xml="<members>
                <member>
                    <name>지돌스타</name>
                    <company>wecon</company>
                    <telnum>010-2238-0321</telnum>
                </member>
                <member>
                    <name>mira</name>
                    <company>wecon2</company>
                    <telnum>010-2222-2333</telnum>
                    </member>
                <member>
                    <name>mira</name>
                    <company>wecon2</company>
                    <telnum>010-2222-2333</telnum>
                </member>
            </members>"
;
        break;


    case 2:
        $xml="<members>
                <member>
                    <name>mikoung</name>
                    <company>uranos</company>
                    <telnum>010-233-3333</telnum>
                </member>
                <member>
                    <name>uram</name>
                    <company>uranos2</company>
                    <telnum>010-1111-2323</telnum>
                    </member>
                <member>
                    <name>deokgon</name>
                    <company>uranos3</company>
                    <telnum>010-234-9999</telnum>
                </member>
            </members>"
;

        break;

    default:


        break;
}

echo iconv("CP949","UTF-8", $xml);
?>


PHP에서 inconv("CP949","UTF-8",$xml);은 한글을 UTF-8형태로 전송하기 위한 것이다. 서버에서 UTF-8을 지원하지 않는다면 이렇게 해야한다. 그래야 UTF-8로 보낼시 한글이 깨지지 않는다

posted by angelyr
  • 개행 문자 변환하기 : Unix는 \n이지만 윈도우는 \r\n이다. 간혹 윈도우에서 만든 문서를 읽다보면 각 줄의 마지막에 ^M이 표시돼서 읽기 불편할 때가 있다. 치환할 수도 있지만 아래와 같이 명령으로 처리할 수도 있다. :set ff=unix 
  • 파일 삽입 :r 파일명
  • 명령 실행 결과 삽입 :r! 명령어
  • 외부 text복사시 자동 들여쓰기에 의한 계단 현상 제거.
    set paste
  • 대소문자 변경
    1. 모든 문자를 대문자로 :%s/.*/U 1. 모든 문자를 소문자로 :%s/.*/L 1. 모든 단어의 첫번째 문자를 대문자로 :%s/\<./\u&/g
    2. 모든 단어의 첫번째 문자를 소문자로 :%s/\<./\l&/g
    3. 모든 줄의 첫번째 단어를 대문자로 :%s/.*/\u&
    4. 모든 줄의 첫번째 단어를 소문자로 :%s/.*/\l&

  • 소식

    단축키

    보낸 사람 Linux

    해야될 작업

    • vim7이 나왔음. 가능한 vim7의 변경된 점을 추가해 볼것
      • ex) split 단축키 지원 추가 : shift+p

    추가해야될 내용

    1. 같은 문자를 여러번 삽입
      1을 100번 연속 입력해야 하는 경우를 생각해보자. 에디터로 100번 입력하는거 생각보다 짜증날 것이다. 그렇다고 프로그램을 만드는건 더 시간 낭비다. 다음과 같은 방법을 이용해 보자.
      esc키를 눌러서 명령행 모드로 넘어간다.
      100을 입력한다.
      'i'를 입력해서 입력모드로 들어간다.
      반복할 문자인 1을 입력한다.
      esc키를 눌러서 다시 명령행 모드로 넘어간다.
      1초 정도 기달려보자.
      

     

    posted by angelyr