将全局声明的变量值从1个函数转换为另一个函数

时间:2014-02-20 06:05:21

标签: javascript jquery

我有一个关于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();

功能测试提醒ID,但是当我在全球声明它时,它是未声明的。

有人可以帮我解决这个问题吗?

由于

3 个答案:

答案 0 :(得分:1)

我认为你期望getJSON是同步的,但事实并非如此。如果调用是依赖的,你应该嵌套它们:

function test() {
       $.getJSON('/Test1/GetTestID', function (test) {
           $.each(test, function () {
              ID = this["ID"]
              $.getJSON("/TestSite?Test=" + ID; )
           })
       })
}
test1完成test来电之前,

getJSON被调用

答案 1 :(得分:0)

因为getJSON 是异步的,所以执行所需的正确方法是在getJSON的回调中使用返回的ID:

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();

答案 2 :(得分:0)

首先尝试将id设置为Zero

    var ID =0;