2014-11-25 2 views
1

У меня есть этот кусок кода:Дождитесь возвращения из функции

var result; 

$.when(result=make_req("GET", "ajax.php?request=opendiv", true, null, null)).done(alert(result)); 

Можете ли вы сказать мне, почему тревога шоу «не определено»?

make_req() делает некоторый вызов ajax, он работает правильно и возвращает хорошее значение, когда я называю это в одиночку.

Я хочу сохранить результаты make_req в переменной «result», а затем использовать его.

+0

Можете ли вы показать нам свою функцию 'make_req', пожалуйста? – Bergi

+0

Убедитесь, что вы прочитали [Как вернуть ответ от вызова Ajax?] (Http://stackoverflow.com/q/14220321/1048572) – Bergi

+0

@Bergi http://jsfiddle.net/7Lfy2d8y/ – pavon147

ответ

2

Вы выполнение предупреждения сразу же, вы не дожидаясь результатом

Вы должны ссылаться на функции, а не называть его, и добавление скобки к функции будет называть его, в этом случае вы можете использовать анонимную функцию вместо этого, и предупреждения вызовов внутри этого

$.when(make_req("GET", "ajax.php?request=opendiv", true, null, null)) 
    .done(function(result) { 
     alert(result); 
}); 

конечно, make_req() должен вернуть отложенное обещание!

+0

Эй, этого ответа не было, когда я начал свой. Я не получил уведомление. Извините за идентичный ответ - совершенно правильно, что вы получаете upvotes для того, чтобы быть ранней птицей. – Utkanos

+1

@Utkanos - Не проблема, случается со мной все время. – adeneo

0

Потому что done() ожидает, что функция обратного вызова будет передана как единственный параметр, тогда как вы передаете возвращаемое значение alert. Вам необходимо:

.done(function(result) { alert(result); }); 
Смежные вопросы