2014-02-20 37 views
0
   function getDept() { 
       var deplist; 
       //Get Department 
       $.ajax({ 
        type: 'GET', 
        url: '@(Url.Action("getDeptFK", "Settings"))', 
        dataType: "jsonp", 
        success: function (data) { 
         deplist = JSON.parse(JSON.stringify(data)); 
        } 
       }); 
       return deplist; 
      } 

函數返回undefined但調試值在成功工作!不工作函數使用jQuery調用獲取數據。請幫助我

+1

我希望你認識到'JSON.parse(JSON.stringify(data))'是不必要的。它和'x - 5 + 5'一樣有用。只需直接使用'data'即可。沒有理由先將對象/數組轉換爲JSON,然後將JSON解析回對象/數組。 –

回答

2

Ajax是異步的,所以你不能從它返回任何東西。

一種方法是你getDept()功能改寫爲這樣的:

function getDept() { 
    var deplist; 
    //Get Department 

    return $.ajax({ 
     type: 'GET', 
     url: '@(Url.Action("getDeptFK", "Settings"))', 
     dataType: "jsonp", 
     success: function (data) { 
      deplist = JSON.parse(JSON.stringify(data)); 
     } 
    }); 
} 

,那麼你可以將它傳遞給一個變量:

var result = getDept(); 

,並得到一個由AJAX調用,比如返回的數據這個:

result.success(function (data) { 
    console.log(data); 
}); 
+0

默認情況下是不是'JSONP'調用***同步***? – jasonscript

+0

我的錯誤:'跨域請求和dataType:「jsonp」請求不支持同步操作' – jasonscript

+0

感謝您的回答。 – user3295445

相關問題