【问题标题】:Getting Globally declared variable value from 1 function to another function将全局声明的变量值从一个函数获取到另一个函数
【发布时间】:2014-02-20 06:05:21
【问题描述】:

我有一个关于 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,但是当我在全球范围内声明它时,它是未声明的。

有人可以帮我吗?

谢谢

【问题讨论】:

  • ID = this["ID"]??你想做什么?
  • @RC。实际上 id 来自 getJson ,现在添加了一些东西..
  • 不行,得在getJSON的回调中调用test1
  • @RC。所以不可能在全局声明的变量上传递值并在另一个函数中获取它??
  • 你忘记了ID = this["ID"]上的分号

标签: javascript jquery


【解决方案1】:

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

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

test1test 完成其getJSON 调用之前被调用

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 先生 function test1(id)function test1(theId)?
    • @RenTao 一些关于 JS 变量作用域和函数的基础教程可能是个好主意
    • 只是澄清一下先生
    • test() 中,如果theId123,那么test1(theId) 调用test1 并使用值123test1 我们得到@987654333 @ 作为id 的值。 theId 只存在于test()id 只存在于test1
    【解决方案3】:

    先试试这个,把你的 id 设为零

        var ID =0;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-23
      • 2015-12-14
      • 1970-01-01
      • 1970-01-01
      • 2012-05-21
      • 2016-06-09
      • 1970-01-01
      • 2012-02-19
      相关资源
      最近更新 更多