Обновление JavaScript и доступ к переменной вне функции - PullRequest
0 голосов
/ 13 января 2012

Я, должно быть, делаю что-то не так.Я надеялся, что код ниже обновит и получит доступ к глобальной переменной 'gvar', но это не так.Что я делаю не так, пожалуйста?

<script type="text/javascript">
    var gvar;
    $(function () {                     
        $(document).ready(function () {
            $.getJSON("json.php", function (myData) {
                $.each(myData.tag, function (t, myData) {
                    if(myData.myId != null) {
                        gvar = myData.myId;
                    }
                });
                return false;
            })
        });
    });
</script>

<script type="text/javascript">
    alert(gvar);
</script>

1 Ответ

3 голосов
/ 13 января 2012

gvar заполняется только тогда, когда дом готов.Предупреждение, однако, выполняется, как только эта часть кода анализируется.Попробуйте поместить предупреждение в конец функции ready().

@ У Йоши есть еще один хороший момент, который я только что пропустил: заполнение переменной даже задерживается до успешного выполнения запроса.Чтобы проверить это, вы можете установить время ожидания в несколько секунд, а затем предупредить переменную.Запрос должен быть закончен к тому времени, и переменная будет иметь значение, которое может быть предупреждено.Но это только для проверки того, работает ли переменная в глобальной области или нет, потому что при предупреждении внутри обратного вызова переменная была установлена ​​прямо над предупреждением.;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...