$.getJSON("../../index.php/churchlocator/base", function(data) {
base_url = data.base;
});
alert(base_url);
Как я могу получить base_url в приведенном выше коде, чтобы быть доступным за пределами getJSON var?
Правильный ответ здесь - поместить весь код, который ссылается на результат вызова ajax в обработчике успеха для вызова ajax. Не используйте для этого глобальные переменные:
$.getJSON("../../index.php/churchlocator/base", function(data) {
var base_url = data.base;
alert(base_url);
// or you may call some other function here and pass it the data
myFunction(base_url);
});
Ajax-вызовы являются "асинхронными" (что означает A в Ajax). Это означает, что они завершатся когда-нибудь в будущем, а ваш другой javascript продолжает работать. Когда они закончатся, они назовут своего обработчика успеха. Таким образом, единственный способ узнать, когда данные были возвращены из вызова Ajax, заключается в том, чтобы помещать код внутри обработчика успеха для работы с возвращенными данными или путем вызова функции из этого обработчика успеха и передачи ему данных.
Это асинхронное программирование, и вы ДОЛЖНЫ использовать эту модель, если вы программируете с асинхронными функциями любого типа. Вы не можете использовать традиционное последовательное программирование с асинхронными вызовами функций.