jQuery.exec_json 으로 모듈,위젯,애드온 폴더의 쿼리도 가능한건가요?
function doFnc(module, action, target_srl) {
var params = {'target_srl':target_srl,'cur_mid':current_mid};
jQuery.exec_json(module+'.'+action, params, completeFnc);
}
이런힉으로 모듈의 act를 실행해서 결과를 리턴 받는 형식을 보고 따라해서 해봤는데요.
혹시 이런 정해진 act 외 쿼리파일로 db에서 조회하는 것 같은 것도 가능한가요?
$result = executeQuery('addons.addon_name.QueryID',$obj)
위와 같은 것을 jQuery.exec_json 으로 구현해서 결과를 가져오는 것을 똑같이 할 수 있는 건지 궁금합니다.
그리고 jQuery.exec_json 의 설명 같은 것을 열람해 볼 수 있는 곳이 있을까요?
댓글 5
아무런 인증 절차가 없는 exec_json에서 임의의 쿼리를 실행할 수 있다면 어마어마한 보안취약점이겠지요?
모듈의 module.xml에 등록된 액션만 호출할 수 있습니다.
액션명과 쿼리명이 동일한 경우에도 실제로 호출되는 것은 액션이지 쿼리가 아닙니다.
exec_json의 기본적인 형태는 아래와 같습니다.
라이믹스 및 XE 최신버전 기준으로 "jQuery"는 필요하지 않습니다.
exec_json('모듈명.액션명', { 변수1: 값1, 변수2: 값2 ... }, function(data) {
// 서버단에서 $this->add(변수명, 값); 한 데이터를 여기서 data.변수명 으로 사용 가능
});
세 번째 파라미터로 익명함수(이름을 따로 부여하지 않은 일회용 함수)가 통째로 들어간다는 점을 기억하면
일반적인 함수에 파라미터 3개를 넘기는 것과 다를 바가 없습니다.
굳이 일반 함수를 선언해서 넣는 분들이 많은데, 그럴 필요 없습니다. 딱 한 번 호출하고 말 테니까요.
위의 코드에서 파란색으로 표시한 부분 전체가 3번째 파라미터에 해당합니다.
data라는 변수명도 함수 내에서만 사용하는 것이므로 ret_val 등으로 바꿔 사용해도 무방합니다.
아, 그리고 게시판 잘못 선택하신 것 같습니다. ㅋㅋㅋ 운영진이 옮겨주시겠죠 뭐~
세번째 인자에 함수가 모듈함수에서 결과로 반환해주는 값($this->add(변수명, 값);) 이 들어오는 곳으로 규칙으로 짜여진 건가요?
모듈에서 add한 값이 들어옵니다.