2010-10-19 48 views
2

此功能不會返回任何值,即使在Ajax調用經過正確功能與jQuery AJAX在它沒有返回值

功能:

function queryData(request) 
{ 
    var ret = null; 
    $.ajax({ 
     url: 'ajax.php', 
     data: 'requestdata='+request, 
     dataType: 'json', 
     type: 'post', 
     success: function (j) { 
      if(j.ok == true) 
       return j.data; 
      else 
       return 'error'; 
     } 
    }); 
    return 'error'; 
} 
+0

可能重複[如何訪問此ajax請求的返回值?](http://stackoverflow.com/questions/3829390/how-do-i-access-the-return-value-of-this -ajax請求) – Guffa 2010-10-19 05:17:04

回答

3

ajax函數異步工作,這意味着它將在從服務器獲取結果時執行成功函數。

由於AJAX請求的性質(至少以此方式執行),queryData函數將始終返回'錯誤'。你可以強制ajax請求同步完成,但這通常不是所需的行爲。

你應該在你的成功函數中添加你想要的邏輯,而不是試圖返回它。如果您願意,可以將命名函數傳遞給success選項。請參閱ajax here上的jQuery文檔。

0

你不能做到這一點。

AJAX是異步,這意味着您的函數將在服務器發送響應之前返回。
您需要使用回調傳遞該值,$.ajax的方式。

0

該函數在ajax調用實際完成之前返回一個值。 ajax調用是一個異步操作,所以當你執行$ .ajax()調用時,它立即返回,你的函數在第16行返回'錯誤'並返回'錯誤'。

幾毫秒後,ajax調用完成並且您的成功函數得到執行,但其返回值不會在任何地方執行。

0

success函數將被異步調用。因此,首先函數初始化ajax請求,並以最後一條語句return 'error';結束。之後,在收到來自服務器的響應之後,將從jQuery調用success函數。它返回到jQuery,但不會被使用。