2010-08-16 99 views
0

爲什麼我不能分配ajaxResult結果?的console.log(結果);在成功選項內正常工作,並在控制檯中出現第二個。但最後的console.log(result)的結果;未定義並首先出現在控制檯中。這有什麼問題?jQuery變量作用域?

$(function() { 
     var result; 
     $.ajax({ 
      type: 'POST', 
      url: 'GelinlikSet', 
      dataType: 'json', 
      success: function (ajaxResult) { 
       result = ajaxResult; 
       console.log(result); 
      } 
     }); 
     console.log(result); 
    }); 

回答

1

ajax調用之外的console.log在ajax返回之前正在執行。

成功的console.log是應該記錄ajax的東西的地方。

+0

什麼是解決方案? – beratuslu 2010-08-16 13:44:51

+0

只是刪除最後一個console.log,結果不意味着在那裏定義 – 2010-08-16 13:48:36

2

result應該設置爲ajaxResultsuccess回調運行。直到當前線程完成(即正在調用$.ajaxconsole.log線程)

Ajax回調將無法回來。

如果您需要對結果執行一些操作,您必須從success回調中執行此操作。

0

第二個console.log是在ajax調用之後立即執行的,因爲它是異步的(即,Ajax中的A),所以在調用成功函數之前。