2013-07-23 148 views
1

我有兩個名爲main.js和utility.js的js文件。我從main.js調用ajax,並且想要main.js中的json響應。Ajax調用返回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不是從服務器返回。 請驗證您的服務器端代碼以確保數據已添加到您的回覆中。