strTranMapID 파라미터를 기준으로 AJAX 통신을 수행한다. 송신/수신 처리시 on_beforetran/on_trancomplete 이벤트가 발생하며, CALLBACK_REQUESTTRAN_SENDDATAFUNC/CALLBACK_REQUESTTRAN_RECVDATAFUNC 실행 파라미터에 지정된 콜백 함수가 호출된다.
Parameters | Type | Description |
---|---|---|
strTranMapID | STRING | 전송시 사용할 TranMapID |
bProcAsync | BOOL | 동기/비동기 처리 여부 |
strTranURL | STRING | [옵션] 서비스 URL |
bURLEncode | BOOL | [옵션] 서비스 URL 인코딩 여부 |
strHttpHeader | STRING | [옵션] http헤더에 추가적으로 포함하고자 하는 정보 |
strSendData | STRING | [옵션] 송신 데이터 |
lTranTimeOut | long | [옵션] 거래 Timeout |
Type | Description |
---|---|
BOOL | 전송 성공/실패 여부 (Remark 참조) |
bProcAsync 파라미터에 의해서 비동기 통신 방식과 동기 통신 방식이 결정되며, 통신 방식에 따라 업무 서버에서 데이터 처리 결과 정보를 확인하는 방법이 다르다.
strTranURL 파라미터는 기본 ULR(TRAN_BASEURL 실행 파라미터)이 아니라, 동적으로 다른 URL을 호출하고자 할 경우 해당 URL을 넘겨 주면 된다. 만약 기본 URL로 호출하고자 할 경우 해당 파라미터는 Empty("")으로 주면 된다.
>strTranURL 파라미터는 값을 "http"로 시작되는 Full URL을 지정한 경우, TRAN_BASEURL 실행 파라미터 값은 무시되며, 그렇지 않은 경우, TRAN_BASEURL 실행 파라미터 값에 붙여진 URL이 사용된다.
bURLEncode 파라미터를 true로 지정한 경우, strTranURL 값을 encodeURI 함수로 인코딩을 수행하고, strSendData 파라미터 값을 encodeURIComponent 함수로 인코딩을 수행한다.
strSendData 파라미터 값은 AJAX 통신시 data부에 설정되는 데이터이다.
strHttpHeader 파라미터는 AJAX 통신시 HTTP 헤더부에 설정할 데이터 문자열을 지정한다. 데이터 형식은 샘플 소스를 참조한다.
* strHttpHeader 파라미터 설정 방법 헤더 키와 헤더 값은 ':' 문자로 구분 여러 항목을 지정할 경우 \x0A 값 또는 개행문자로 구분 (예제 참조)
lTranTimeOut 파라미터는 옵션 파마리터로 값을 별도로 지정하지 않는 경우, default로 10분(TRAN_TIMEOUT 실행 파라미터)이다. 값을 줄 경우 milisec단위로 주며 1000 = 1초가 된다.
* Return Value : true
* Return Value : false
strTranURL 파라미터값이 Full URL이 아닌 경우, TRAN_BASEURL 실행 파라미터에 설정된 값에 추가된 URL이 호출된다.
strSendData 파라미터값이 null이거나 미지정시 CALLBACK_REQUESTTRAN_SENDDATAFUNC 실행 파라미터에 지정된 함수가 호출되며, CALLBACK_REQUESTTRAN_SENDDATAFUNC 실행 파라미터에 지정된 함수에서 settranmaptraninfo 함수를 통해서 값을 설정해야 한다.(샘플 소스 참조)
데이터 수신 완료시 CALLBACK_REQUESTTRAN_RECVDATAFUNC 실행 파라미터에 지정된 함수가 호출된다.(샘플 소스 참조)
// Async 방식 데이터 통신 버튼 : btnAsync
// Sync 방식 데이터 통신 버튼 : btnSync
// Async 방식 데이터 통신 버튼 클릭 이벤트 처리
function btnAsync_on_mouseup()
{
// 헤더부 조립 예시 (여러항목을 지정할 경우 \x0A 값 또는 개행문자로 구분
var strRequestHeader1 = "HEADER_KEY1:HEADER_VALUE1\x0AHEADER_KEY2:HEADER_VALUE2";
var strRequestHeader2 = "HEADER_KEY1:HEADER_VALUE1\nHEADER_KEY2:HEADER_VALUE2";
// Async 방식 파라미터 설정
var bRet = screen.requesttran("TR_ASYNC", true, "", true, "");
if(bRet == false) {
// 데이터 송신중 오류가 발생하면 "on_submitcomplete" 이벤트가
// 발생하지 않는다.
screen.alert("데이터 송신중 오류가 발생하였습니다.");
}
}
// Async 데이터 통신 방식일때 데이터 수신 완료 이벤트
// 자세한 내용은 on_trancomplete 도움말 참조
function screen_on_trancomplete(mapid, result, recv_userheader, recv_code, recv_msg, recv_data) {
{
// 처리 결과를 콘솔에 출력
factory.consoleprint("mapid = " + mapid);
factory.consoleprint("result = " + result);
factory.consoleprint("recv_userheader = " + recv_userheader);
factory.consoleprint("recv_code = " + recv_code);
factory.consoleprint("recv_msg = " + recv_msg);
factory.consoleprint("recv_data = " + recv_data);
return;
}
// Async 방식 데이터 통신 버튼 클릭 이벤트 처리
function btnSync_on_mouseup()
{
var strSendDataKey = "SEND_DATA_KEY";
var strSendDataValue = "SEND_DATA_VALUE";
var strSendData = strSendDataKey + "=" + encodeURIComponent(strSendDataValue);
// Sync 방식 파라미터 설정
var bRet = screen.requesttran("TR_SELECT", false, "demo/SelectData.jsp", false, "", strSendData, 0);
if(bRet == false) {
screen.alert("데이터 송신중 오류가 발생하였습니다.");
return;
}
// 데이터 통신 결과 정보 오브젝트를 구함
// 오브젝트에는 on_trancomplete 이벤트의 파라미터로 전달되는
// 데이터를 포함하고 있음.
var instResult = screen.gettranresult();
if(instResult == null) {
screen.alert("데이터 처리 결과를 얻을 수 없습니다.");
return;
}
// 처리 결과를 콘솔에 출력
factory.consoleprint("mapid = " + instResult.mapid);
factory.consoleprint("result = " + instResult.result);
factory.consoleprint("recvuserheader = " + instResult.recvuserheader);
factory.consoleprint("recvcode = " + instResult.recvcode);
factory.consoleprint("recvmsg = " + instResult.recvmsg);
factory.consoleprint("recvdata = " + instResult.recvdata);
}
/**
* 실행 파라미터 - CALLBACK_REQUESTTRAN_SENDDATAFUNC
* 화면 requesttran 송신 데이터 처리 콜백
* 화면 requesttran API 함수 호출시 AJAX로 데이터를 송신하기 전에 호출됨
* 화면내에서 settranmaptraninfo 함수를 통해서 송신 데이터 및 부가 정보를 설정해야 함
* @param objScreen 화면 오브젝트
* @param strTranMapId 트랜맵 ID
*/
function CallbackTranSendDataFunc(objScreen, strTranMapId) {
var send_data_str, optionInfo;
console.log(this);
console.log("CallbackTranSendDataFunc> Screen URL = " + objScreen.getscreenurl());
console.log("CallbackTranSendDataFunc> strTranMapId = " + strTranMapId);
// TODO: strTranMapId에 대한 송신 데이터 문자열 생성
send_data_str = "senddata_" + strTranMapId;
optionInfo = {
tran_url: "terminal/jsp/" + strTranMapId + ".jsp",
is_async: true,
is_encode_url: true,
http_header_str: "",
timeout: 0,
http_method: "POST"
};
// requesttran 송신 데이터 및 옵션 설정
objScreen.settranmaptraninfo(strTranMapId, send_data_str, optionInfo);
}
/**
* 실행 파라미터 - CALLBACK_REQUESTTRAN_RECVDATAFUNC
* 화면 requesttran 수신 데이터 처리 콜백
* 화면 on_trancomplete 이벤트가 호출된기 전에 호출됨
* @param objScreen 화면 오브젝트
* @param strTranMapId 트랜맵 ID
* @param result 처리 결과 (1: 성공, 그외 오류)
* @param recv_userheader 서버에서 수신된 사용자 정의 데이터 (기본값: "")
* @param recv_code 서버에서 수신된 처리 결과 코드 (기본값: "")
* @param recv_msg 서버에서 수신된 처리 결과 메시지 (기본값: "")
* @param recv_data 서버에서 수신된 데이터
*/
function CallbackTranRecvDataFunc(objScreen, strTranMapId, result, recv_userheader, recv_code, recv_msg, recv_data) {
var tran_url, is_async, is_encode_url, http_header_str, send_data_str, timeout, http_method;
console.log(this);
console.log("CallbackTranRecvDataFunc> Screen URL = " + objScreen.getscreenurl());
console.log("CallbackTranRecvDataFunc> strTranMapId = " + strTranMapId);
console.log("CallbackTranRecvDataFunc> result = " + result);
console.log("CallbackTranRecvDataFunc> recv_userheader = " + recv_userheader);
console.log("CallbackTranRecvDataFunc> recv_code = " + recv_code);
console.log("CallbackTranRecvDataFunc> recv_msg = " + recv_msg);
console.log("CallbackTranRecvDataFunc> recv_data = " + recv_data);
// TODO: recv_data 파라미터 값을 기준으로 수신 데이터를 파싱하여 화면에 표시 처리
}