2010-08-16 148 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),所以在调用成功函数之前。