2012-06-01 6 views
1

ajax 호출 후 호출해야하는 functionName이 전달되는 javascript 함수가 있습니다. ajax 호출은 js 파일에 대한 참조를 포함하는 일부 html을 반환합니다. 내 함수에 전달되는 functionName은 html에 있지만 js 파일의 객체를 참조합니다. 그 물건이 때때로 존재하고 때로는 그렇지 않다는 것을 나는 눈치 채고있다. 개체가 항상 존재하는지 (또는 그것이 존재할 때까지 기다려야) 자바 스크립트 함수 만 호출 할 수있는 방법이 있습니까? 내가 개체 변수가 무엇인지 모르기 때문에 스크립트 파일이 dom에로드되었는지 확인한 다음 함수를 호출하는 방법이 있는지 확인하십시오.AJAX 호출 후 Javascript 함수 호출

function(functionName) 
    { 
     $.ajax({ 
    url: properties.url, 
    type: properties.type, 
    data: properties.data, 
    dataType: properties.format, 
    success: function (data) { 
    // data contains <div>myname</div><script src="/myfile.js" type="text/javascript"></script> 
    // Put the data in some div 
    BindData(data); 

    // How to ensure that the script myfile.js is loaded in dom before I call eval 
    eval(functionName); 
    } );  

    } 
+0

와 $ 아약스 jQuery를 시도 할 수 있습니다 당신은'GetAjaxData'에 대한 코드를 제공 할 수 있습니까? 솔루션은 해당 함수에 콜백을 전달해야 할 수 있습니다. – apsillers

+0

죄송합니다. 잘하셨습니다. 평가 코드는 ajax 호출의 성공 부분에 있습니다. –

+0

위의 코드를 편집합니다. ['ajaxSuccess()'] (http://api.jquery.com/ajaxSuccess/) 메소드를 사용하십시오. – undefined

답변

2
function(functionName) 
    { 
     $.ajax({ 
    url: properties.url, 
    type: properties.type, 
    data: properties.data, 
    dataType: properties.format, 
    success: function (data) { 
    // data contains <div>myname</div><script src="/myfile.js" type="text/javascript"></script> 
    // Put the data in some div 
    BindData(data); 

    //ensure the script has loaded. 
    $.getScript($('script:first',data).attr('src'), function(){ 
      eval(functionName); 
    }); 

    });  

    } 
0

당신은 아약스 호출이 끝나기 전에 데이터가 무엇인지보기 위해 시도 할 수 있습니다. 데이터가 "정의되지 않은"경우이

var data = GetAjaxData(); 
while(typeof data === undefined); 
bind, eval ecc ecc 

같은 것을 확인할 수 있습니다 그러나 GetAjaxData 다른 뭔가를 반환 할 경우이 변경됩니다, 확실하지만. 당신은 같은 일을 시도 할 수 있지만 전에 :

var data = null; 
data = GetAjaxData(); 
while(data == null); 
do stuff 

또한 성공 핸들러 콜백 희망 도움