2014-12-17 4 views
0

을 가지고 함수의 반환 인수를 사용하여 I 자바 스크립트에 다음과 같은 기능이 있습니다자바 스크립트 - AJAX 호출

function checkFunc(msg) { 
 
    $.getJSON("myurl.php", { 
 
    dtccode: msg 
 
    }, function(j) { 
 
    return j.boolField; 
 
    }); //JSON call 
 
}

그리고 내가 다른 함수에서 호출 :

function check(msg) { 
 
    var ret = checkFunc1(); //some other function 
 
    ret = checkFunc2() && ret; //some other function 
 
    ret = checkFunc3() && ret; //some other function 
 
    ret = checkFunc() && ret; 
 
    if (ret) { 
 
    //code 
 
    } 
 
}

내 문제는 checkFunc이 false를 반환해야하지만 true를 반환한다는 것입니다. 이 문제는 동기화 문제 일 수 있다고 생각하지만 무엇을해야할지 모르겠습니다.

아무도 도와 줄 수 있습니까?

답변

2

AJAX는 비동기입니다. 콜백 함수를 사용하여 결과를 가져와야한다는 것을 의미합니다. 그래서 같이 :

function checkFunc(msg, callback) { 
    $.getJSON("myurl.php", { 
    dtccode: msg 
    }, function(j) { 
    callback(j.boolField); 
    }); //JSON call 
} 

function check(msg) { 
    checkFunc(msg, function(result){ 
    alert(result); 
    }); 
} 

편집 : 사용 이연 시스템 :

$.getJSON("myurl.php").done(function(j) { 
    callback(j.boolField); 
}); 

또한 가능한 오류를 확인하기 위해() 실패 추가 할 수 있습니다. 문서를 확인하십시오 : http://api.jquery.com/jquery.getjson/

+1

이상, 지연된 http://api.jquery.com/category/deferred-object/ – Tetaxa

+0

좋은 지적 Tetaxa를 사용하십시오. 이것을 언급 해 주셔서 감사합니다. –

+0

지연을 사용하여 답변을 게시 할 수 있습니까? 나는 그들과 문제가 있었다. –