// Best score getters/setters LocalStorageManager.prototype.getBestScore = function () { jQuery.when(jQuery.ajax({ url: request_uri+'index.php', type: 'POST', async: false, data: { module: 'yakjunmo', act: 'dispYakjunmoGetgamedata', gubun: '0' }, dataType: 'json', contentType: 'application/json' })) .done(function (data) { console.log(data.result); return data.result || 0; }); };
제가 지금 2048이라는 게임을 xe에 디비연동하려고 합니다.
해당코드는 디비에 기록된 베스트 스코어를 가져와서 리턴하는 것인데,
이렇게 하면 아무것도 리턴이 안되어 버립니다.
구글링해보니 ajax통신은 기본이 비동기화라서 데이터값을 리턴받을때까지 기다리지 않고 진행되기때문에 그렇다고 하여
동기화 옵션을 추가하면 된다고 했는데, async 옵션을 넣어도 여전히 똑같은데요
방법이 없을까요 ?
ajax 요청 결과는 return하지 않고 콜백 함수(done에 정의한 함수)에서 직접 처리하고 마무리하는 것이 정석입니다.
XE 액션이라면 ajax를 직접 실행하지 말고 XE에서 제공하는 exec_json 함수를 사용해 보세요.
exec_json('모듈명.액션', { 데이터 }, function(data) {
// 결과 받아서 처리
});