Вы не можете напрямую получить доступ к возвращаемому значению функции, определенной для «success»;Во-первых, вы должны знать, что здесь задействованы две функции: checkTime
и функция-обработчик безымянного события для события успеха вызова ajax.Вы хотите извлечь значение из этой безымянной функции-обработчика события;эта функция, однако, вызывается не напрямую из checkTime
, а когда возвращается запрос AJAX (это программирование, управляемое событиями : function (data) {...}
выполняется, когда событие вызов AJAX завершился ).
В вашем примере alert
, который вы вызываете после выполнения checkTime
, обычно вызывается до завершения запроса AJAX;это происходит потому, что запрос AJAX происходит асинхронно , и поэтому событие, когда вызов был успешным, еще не произошло.Если вы всегда хотите дождаться ответа на запрос, вы можете отключить асинхронность вызова AJAX (async: false);но, возможно, вы также можете сделать различие между тем, что вы хотите сделать непосредственно в обработчике событий, а не снаружи.Это был бы подход, если вы хотите следовать парадигме программирования, управляемой событиями.
Если вы хотите продолжать делать что-то еще во время выполнения запроса, ваши варианты также могут включать, например, использование некоторых других (например,global) переменная для «возвращаемого значения» вызова AJAX функции успеха (и, возможно, секунды для указания того, завершен ли вызов) и периодической проверки, если он уже установлен (но это не будет следовать парадигме программирования, управляемой событиями)и может считаться плохой практикой, так как необходим ненужный частый опрос переменной).