Доступ к переменной javascript вне оператора jQuery

0
$.getJSON("../../index.php/churchlocator/base", function(data) {
    base_url = data.base;
}); 
alert(base_url);

Как я могу получить base_url в приведенном выше коде, чтобы быть доступным за пределами getJSON var?

  • 1
    попробуйте объявить var base_url выше $ .getJSON
  • 0
    Эй, Майкл отправил ответ
Показать ещё 1 комментарий
Теги:

1 ответ

2
Лучший ответ

Правильный ответ здесь - поместить весь код, который ссылается на результат вызова 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, заключается в том, чтобы помещать код внутри обработчика успеха для работы с возвращенными данными или путем вызова функции из этого обработчика успеха и передачи ему данных.

Это асинхронное программирование, и вы ДОЛЖНЫ использовать эту модель, если вы программируете с асинхронными функциями любого типа. Вы не можете использовать традиционное последовательное программирование с асинхронными вызовами функций.

  • 0
    Как мне получить доступ к base_url в других частях моего скрипта?
  • 0
    @MichaelGrigsby - пожалуйста, прочитайте, что я добавил к своему ответу. Вы должны программировать для асинхронного кода. Вы не можете использовать традиционное синхронное программирование.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню