Wednesday, May 9, 2012

jQuery Mobile on PhoneGap :: Cross-domain page request 설정

jQuery mobile 로 remote 서버의 페이지에 접근하는 경우는 두가지다.

1. ajax 처리

ajax처리는 javascript 혹은 jQuery로 간단히 처리할 수 있다.
아래의 jQuery 코드는 www.geference.com 의 exam.php를 실행하고 그 결과를 data로 받아 경고창에 뿌려준다.  jQuery mobile 에서도 잘 작동한다.


$.post( 'www.geference.com/exam.php' , function(data){ alert( data) } )




2. remote 서버 페이지로 페이지 이동

jQuery mobile 의 페이지 이동은 $.mobile.changePage() 함수가 담당한다.
하지만 아래의 코드는 제대로 작동하지 않는다.


$.mobile.changePage( 'www.geference.com/exam.php')



기본적으로 jQuery mobile은 cross-domain 페이지 이동이 안 되도록 설정 되어 있다.
cross-domain 페이지 이동을 가능케 하려면,  아래 설정을 app의 시동시에 등록해 두어야 한다.


$.support.cors= true;
$.mobile.allowCrossDomainPages = true;


phonegap 1.3.0 버전을 기준으로 테스트해 본 결과, $.support.cors 는 기본 설정이 true로 되어 있어, 따로 설정을 하지 않아도 되지만, $.mobile.allowCrossDomainPages 는 기본이 false로 되어 있어 명시적으로 true로 설정해 주어야 한다.

phonegap에서 white list 설정을 풀어주어야 하는 것도 잊으면 안 된다.