2013-09-10 5 views
-2

Почему следующая функция JavaScript/jQuery возвращает «undefined»?Функция JavaScript возвращает «undefined»

function getData(number) { 
    $.get("data.php", { 
     content: number 
    }).done(function(data) { 
     return data; 
    }); 
} 
+2

Потому что он ничего не возвращает. 'Return' в _done_ для _callback_. –

+0

Добро пожаловать в мир asyn call. '$ .get' - асинхронный вызов – Satpal

+1

Подсказка:' getData() '* завершает * и * возвращает * до того, как' .done() 'когда-либо вызывается. – David

ответ

1

getData() мгновенно возвращается. Функция done(), которую вы добавили, будет гореть LATER, когда она будет полностью выполнена. И вы ничего не возвращаете в getData().

0

Значение возвращаемого значения по умолчанию для любой функции, если оно достигает конца без оператора возврата, не определено. Внешняя функция getData в вашем примере не содержит оператора возврата. (Хотя внутренняя, анонимная функция делает, эта функция не вызывается, она передается в качестве аргумента в метод, который будет вызываться позднее)

0

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

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