묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
모듈의 controller에서 콜백 함수가 호출이 안되네요..
2014.03.14 15:04
같은 소스를 2개의 다른 호스팅에 설치를 했는데 한곳은 정상인데 다른 한곳이 안되고 있네요
모듈의 controller에서 콜백 함수가 호출이 안되네요..
아래는 작성한 소스인데요..
filter에서 controller에 함수까지
filter/00.xml
<filter name="insert_purchase" module="eshipping" act="insertPurchase" confirm_msg_code="confirm_submit">
<form>
</form>
<parameter>
</parameter>
<response callback_func="completeInsertPurchase">
<tag name="error" />
<tag name="message" />
<tag name="document_srl" />
</response>
</filter>
tpl/js/00.js
// Shop 주문 후
function completeInsertPurchase(ret_obj)
{
var error = ret_obj['error'];
var message = ret_obj['message'];
var document_srl = ret_obj['document_srl'];
var url = current_url.setQuery('act','dispEshippingPayment').setQuery('document_srl',document_srl);
location.href = url;
}
insertPurchase()
{
$this->add('mid', Context::get('mid'));
$this->add('document_srl', $obj->document_srl);
$this->setMessage($msg_code);
}
디버깅을 하면 insertPurchase가 모두 끝나고 다음에 callback fuction이 호출이 안됩니다.
js파일에 alert가 호출이 안되는걸로 봐서는
무엇이 문제일까요?
질문 한가지 더
모듈의 controller에서 아래 두개의 차이점을 알고 싶습니다.
$this->add('mid', Context::get('mid'));
$this->add('document_srl', $obj->document_srl);
return new Object(0, 'success');
$this->add('mid', Context::get('mid'));
$this->add('document_srl', $obj->document_srl);
$this->setMessage($msg_code);
문제 해결했네요.
처음엔 한사이트에서 정상적으로 되고 있어 프로그램에 문제가 없고 모듈이나 애드온과 충돌이 발생하는줄 알았는데
(다른 프로그램에서 충돌이 생기는 문제로 해결 경험이 있어서...ㅋㅋ)
하룻밤 새고 다음날 심기일전해서 문제를 찾았습니다.
문제는 정상적으로 보이는 곳에 문제가 있었다는 것이지요..
새롭게 만든 모듈의 controller에서 정상적으로 리턴을 했지만 함수내에 버그가 있으면
사이트에 나타나지도 않고 callback function도 호출을 하지 못하네요.
callback 함수에 문제가 있는 것이 아니라 controller함수내에서 리턴은 하지만(윈도우 프로그램에서는 프로그램
이 죽거나 에러표시가 나겠지만) 비정상 종료가 되는 것 같습니다.
이걸 확인할 수 있는 방법이 debugPrint를 한줄씩 다 확인하거나 주석처리로 문제부분을 좁혀가야 했네요.
(c에서는 디버깅 모드로 따라가서 값을 확인할 수 있어는데..흐흐)
하여간 어떻게든 찾았으니 다행이라 생각됩니다.(위안삼아)