본문 바로가기
공부/ASP

ASP + AJAX(JSON) + 엔터 없애기

by Ohming 2014. 8. 21.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
모바일 웹 페이지에서
더보기 기능을 구현하려고 

이 페이지를 참고 했는데

출처 : http://www.setisigns.net/m/post/384


ASP 페에지 코딩 부분

호출 페이지로 전달할 데이터를 생성해 낸다.
호출된 데이터는 JSON 타입으로 사용하기 위해 문자열로 만들어준다.

 <%

    response.charset = "utf-8"
    
    dim cmd, db
    
    set db = server.createobject("adodb.connection")
    db.open "provider=sqloledb; data source = IP Address;uid=DBID;pwd=PASSWORD;database=DBNAME"
    
    set cmd = server.createobject("adodb.command")
    cmd.activeconnection = db
    cmd.commandtext = spNAME
    cmd.commandtype = 1
    
    set rs = cmd.execute
    
    if not rs.eof then
        OpenEventCommentList = rs.getrows()
    end if
    rs.close
   
    set rs = nothing

'   ============================================================
'   배열로 저장된 레코드 셋 출력하기.
'   ============================================================
    dim rowCnt, colCnt
    rowCnt = ubound(OpenEventCommentList, 2)    '행
    colCnt = ubound(OpenEventCommentList, 1)    '열
   
    dim json
    if IsArray(OpenEventCommentList) then
        json = json + "["
        for i=0 to rowCnt
            json = json + "{"
            for j=0 to colCnt
                if j=0 then json = json + """UserID"":""" end if
                if j=1 then json = json + """Content"":""" end if
                if j=2 then json = json + """RegDate"":""" end if
                json = json + OpenEventCommentList(j, i)
                json = json + ""","
            next
            json = Mid(json, 1, len(json) -1)
            json = json + "},"
        next
        json = Mid(json, 1, len(json) -1)
        
        json = json + "]"
    end if
    
    response.write json
%>


HTML 호출 페이지
1. createXMLHttpRequest() 호출 객체를 생성한다.
2. 콜백함수를 호출할 getCommentList() 객체를 생성한다.
3. 콜백함수 getCommentList_Callback()를 생성한다.

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>댓글 기능</title>
    <script language="javascript" type="text/javascript">
        var strTable = "";
        function createXMLHttpRequest() {
            if (window.ActiveXObject) {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            else if (window.XMLHttpRequest) {
                xmlHttp = new XMLHttpRequest();
            }
        }

        function getCommentList() {
            createXMLHttpRequest();
            xmlHttp.onreadystatechange = getCommentList_Callback;
            xmlHttp.open("GET", "GetCmtList.asp", true);
            xmlHttp.send();
        }

        function getCommentList_Callback() {
            if (xmlHttp.readyState == 4) {
                if (xmlHttp.status == 200) {
                    var obj = eval('(' + xmlHttp.responseText + ')');

                    strTable += "<table border='1' cellpadding='0' cellspacing='0'><tr><td>Idx</td><td>keyword</td><td>writeday</td></tr>";
                    for (var i = 0; i < obj.length; i++) {
                        strTable += "<tr>";
                        strTable += "<td>" + obj[i]["UserID"] + "</td>";
                        strTable += "<td>" + obj[i]["Content"] + "</td>";
                        strTable += "<td>" + obj[i]["RegDate"] + "</td>";
                        strTable += "</tr>";
                    }
                    strTable += "</table>";
                    document.getElementById("CommentList").innerHTML = strTable;
                }
            }
        }
    </script>
</head>
<body>
    <div id="CommentList"></div>
    <form id="eventComment">
        <textarea name="content" id="cheerContent" cols="100" rows="3"></textarea>
        <input type="button" value="comment" />
    </form>
    <script type="text/javascript" language="javascript">
        getCommentList();
    </script>
</body>
</html>




자꾸만 성공 200인데도 불구하고 eval을 하려고 할 때마다

이런에러를 퐁퐁 뱉었다.

맨처음에 ajaxsubmit 을 사용해서 dataType: "json", 을 했었는데
위와 같은 에러가 나오고, text를 하면 받아 오길래
얘가 asp에서 반환한 값이 json 문법으로는 이상이 없지만
text로 인식하는구나를 느낌.

그래서 eval을 시도했던건데 여기에서 계속 또 에러가 잡힘.

그런데 alert 해서 찍어 볼 때마다 엔터가 있어서 이상하다싶기는 했었는데
이게 핵심이었음.... 하하하.

받아온 값을 
var value = xmlHttp.responseText;
 value = value.replace(/\r\n/g, '');

이렇게 해줬더니 엔터가 다 사라지고 괜찮아짐. 하하하하.

그리고 ajaxsubmit 쓰려다가 저 위에껄 따라서 하긴 했는데  저거 잘 된다.

그래요! 저는 오늘도 좀 더 성장했습니다.


댓글