2010-08-16 5 views
0

Почему я не могу назначить ajaxResult? console.log (результат); корректно работает, что находится внутри опции успеха, и появляется второй в консоли. но результат последнего из console.log (результат); не определено и сначала появляется в консоли. что в этом плохого?jQuery переменная scope?

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

ответ

1

Консоль.log вне вызова ajax выполняется до возвращения ajax.

Консоль.log в успехе - это то, где должно быть зарегистрировано что-то из ajax.

+0

Что такое решение? – beratuslu

+0

просто удалите последний console.log, результат не будет определен там –

2

result должен быть установлен в ajaxResultпосле в success прогонов обратного вызова.

Обратный вызов AJAX не сможет вернуться до тех пор, пока не будет завершена текущая нить (т. Е. Поток, вызывающий $.ajax и console.log).

Если вам необходимо выполнить какое-либо действие с результатом, вам нужно будет сделать это с обратного вызова success.

0

Вторая консоль.log выполняется сразу после вызова ajax, прежде чем функция успеха вызывается, потому что она асинхронна (т. Е. A в Ajax).

Смежные вопросы