2010-01-30 104 views
4

我想獲得一個函數來執行一個ajax查詢,然後返回解釋的JSON作爲一個對象。但是,無論出於何種原因,一旦執行了此請求,數據只能從該函數內訪問。從jQuery ajax請求返回數據

function getCacheImage(direction) { 

      jQuery.ajax({ 
        url: json_request_string, 
        success: function(data) { 
        return data; 
        } 
      }); 

    } 

我該如何得到這個函數來適當地返回'data'?

謝謝。

回答

9

您需要要麼使用同步Ajax請求(未典型或推薦)和捕獲數據到一個變量中的外部範圍,或找出如何操縱在回調函數的數據。問題是ajax函數在ajax調用完成之前返回 - 它是異步的。

同步方式:

function getCacheImage(direction) { 
     var capture; 
     jQuery.ajax({ 
       url: json_request_string, 
       aSync: false, 
       success: function(data) { 
        capture = data; 
       } 
     }); 
     return capture; 
} 

典型,利用回調

function getCacheImage(direction,callback) { 

     jQuery.ajax({ 
       url: json_request_string, 
       success: function(data) { 
        callback(data); 
       } 
     }); 
} 

getCacheImage('left', function(data) { 
     ...do something with the data... 
} 
3

你不能。 AJAX首字母縮寫代表異步,這意味着AJAX請求被髮送並且控制立即返回到調用函數。你需要做的是使用回調函數中的數據。

0

您正在將數據返回給調用回調函數的代碼。該代碼無法及時發回數據,以便它可以從啓動請求的函數返回。無論你想用數據做

,你在回調函數來完成。