2013-07-23 3 views
1

main.js와 utility.js라는 두 개의 js 파일이 있습니다. main.js에서 아약스를 호출하고 main.js에서 json 응답을 원한다.Ajax return returned undefined

Main.js :

var details= getUIContent(); 

Utility.js :

function getUIContent(){ 
     $.ajax({ 
      type: "POST", 
      url: "http://abc.com/portal", 
      async: false, 
      success: function(message){    
       channels = message.data.length; 
        alert('the channel length'+channels);    
       return message; 
      } 
     }); 
} 

내가 utility.js에 반응을 얻고있다. 문제는 main.js에서 응답을받을 수 없다는 것입니다. 그것은 정의되지 않은 오류를 제공하고 있습니다.

아무도 도와 줄 수 있습니까

+0

환영 약속을 반환하는 것입니다! 비동기 메서드에서 값을 반환 할 수 없습니다. –

답변

3

내가 말했듯이 ajax()과 같은 비동기 메서드에서 값을 반환 할 수 없습니다.

솔루션은 여기에 콜백 메소드

function getUIContent(callback){ 
    $.ajax({ 
     type: "POST", 
     url: "http://abc.com/portal", 
     async: false, 
     success: function(message){    
      channels = message.data.length; 
      alert('the channel length'+channels);    
      callback(message); 
     } 
    }); 
} 

getUIContent(function(details){ 
    //do whatever you want to do with details here 
}); 

을 사용 또는 비동기 처리의 세계로 방법에서

function getUIContent(){ 
    return $.ajax({ 
     type: "POST", 
     url: "http://abc.com/portal", 
     async: false, 
     success: function(message){    
      channels = message.data.length; 
      alert('the channel length'+channels);    
     } 
    }); 
} 

getUIContent.done(function(details){ 
    //do whatever you want to do with details here 
}); 
+0

감사합니다. Arun – Priya

0

서버에서 message.data가 반환되지 않는 것 같습니다. 응답에 데이터가 추가되는지 확인하려면 서버 측 코드를 확인하십시오.