app.asp

1
2
3
4
5
6
7
8
9
10
11
<%
Dim id : id = Request.Form("id")
Dim pw : pw = Request.Form("password")
Dim result : result = id & pw
 
Response.Write("{""result1"":" & result & ",""result2"":""responseOK""}")
 
Response Sample(가독성을 위해서 공백을 넣었지만 위 라인 처럼 공백을 없애야한다.) :
Response.Write("{" "key1" ":" & value1 & "," "key2" ":" & value2 & "}")
Response.Write("{" & key1 & ":" & value1 & "," & key2 & ":" & value2 & "}")
%>
cs

참고 : ajax에서 POST로 보낸 값을 Request.Form으로 받고, Response.Write로 응답한다. 응답은 이런식으로 JSON 형태로 일일히 만들어준다.

참고 : 변수가 아닌 문자열 구간은 일일히 저렇게 다 ""로 감싸주지 않아도 된다. 혹시 몰라서 변수명을 전부 감싸주긴 했지만...

apply.asp

<!DOCTYPE html>
<html lang="ko" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
  </head>
  <body>
    <input type="text" name="id" id="id">
    <input type="password" name='password' id='password'>
    <input type="button" name="send" id="send" value="전송" onclick="sendButton()">
  <script type="text/javascript">
    sendButton = () => {
      var userId = document.getElementById('id').value;
      var userPw = document.getElementById("password").value;
      
      // QueryString 형태로 만들어 jQuery ajax data에 실어 보낸다.
      // 기본적으로 QueryString을 Object로 만들어 보내는데,
      // 이를 인식하지 못 하는 Classic ASP 에서는 수동으로 단순 QueryString을 만들어 보내야한다.
      // 따라서, processData를 false로 바꾼다.
      var queryString = `id = ${userId} & password = ${userPw}`;

      $.ajax({
        url : '/tree/app.asp',
        method : 'POST',
        processData : false,
        contentType : 'application/x-www-form-urlencoded; charset=UTF-8',
        cache : false,
        data : queryString,
        success : (res) => {
            console.log(res);
        }, error : (res) => {
            console.log(res);
        }
      });
    };
  </script>
  </body>
</html>

참고 : ajax에서 보낼 때 data에 { key1 : value1, key2 : value2 } 로 적으면 jQuery가 기본적으로 QueryString으로 만들어 보내는데, value가 객체이거나, 파일이어도 보낼 수 있도록 Object로 만들어 보낸다. 하지만 Classic ASP는 이를 이해하지 못 하기 때문에 수동으로 JSON 형태의 단순 String 형태의 QueryString을 만들어 JSON으로 보내야 하기 때문에 자동으로 데이터를 처리해주는 processData를 false로 바꿔줘야한다. 단, 이 방법은 파일전송을 하지 않는 단순한 String 데이터만 다루는 경우에만 가능하다. 뭐 어차피 Classic ASP 같은 구닥다리 아니면 이런 방법 필요도 없고, Classic ASP는 구닥다리라 파일전송 하려면 DEXT같은 또 다른 ActiveX 구닥다리를 붙여 쓸 것이기 때문에... 파일 전송할 때 JSON은 어쩌지??? 하는 고민은 하지 않아도 될 것 같다.

 

결과

'Network' 탭에서 'Headers' 맨 아래로 내려보자. app.asp에 'Form Data'로 id : Green, password : DreamTrre라는 데이터를 실어 보낸 것이 확인된다. 그리고 app.asp에 가서 콘솔창에 보이는 response를 JSON으로 받아왔다.

 

+ Recent posts