Получение значения переменной, объявленной глобально, из одной функции в другую

0

У меня очень распространенный вопрос о javascript, у меня есть глобально объявленная переменная, но как функция с этой переменной передает значение в объявленной глобально переменной, а затем использует ее во второй функции?

 var ID;

    function test() {

       $.getJSON('/Test1/GetTestID', function (test) {
                $.each(test, function () {
         ID = this["ID"]
         alert(ID);
    }
    })
    }

    function test1() {
             $.getJSON("/TestSite?Test=" + ID; )
    }

    alert(ID);
    test();
    test1();

Функциональный тест предупреждает идентификатор, но когда я объявляю его глобально, он не был объявлен.

Может кто-то помочь мне с этим??

благодаря

  • 1
    ID = this["ID"] ?? Что ты пытаешься сделать?
  • 0
    @RC. на самом деле идентификатор пришел из getJson, теперь что-то добавил ..
Показать ещё 4 комментария
Теги:

3 ответа

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

Я думаю, вы ожидаете, что getJSON будет синхронным, но это не так. Если вызовы зависят, вы должны их вложить:

function test() {
       $.getJSON('/Test1/GetTestID', function (test) {
           $.each(test, function () {
              ID = this["ID"]
              $.getJSON("/TestSite?Test=" + ID; )
           })
       })
}

test1 вызывается до того, как test завершит вызов getJSON

0

Поскольку getJSON является асинхронным, правильный способ выполнить то, что вам нужно, это использовать возвращаемый идентификатор в обратном getJSON:

function test() {    
    $.getJSON('/Test1/GetTestID', function (test) {
        $.each(test, function () {
            var theId = this["ID"];
            alert(theId);
            test1(theId);
        }
    });
}

function test1(id) {
    $.getJSON("/TestSite?Test=" + id);
}

test();
  • 0
    Сэр, function test1(id) или function test1(theId) ?
  • 0
    @RenTao неплохое руководство по области видимости и функциям переменной JS может быть хорошей идеей
Показать ещё 2 комментария
0

Попробуйте это сначала, когда вы установили свой id в Zero

    var ID =0;

Ещё вопросы

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