【问题标题】:Javascript: How to create variable in ajax "success" function? [duplicate]Javascript:如何在 ajax“成功”函数中创建变量? [复制]
【发布时间】:2013-03-23 21:30:45
【问题描述】:
$(document).ready(function() {
          $.ajax({
              url: 'objects.php',
              type:'GET',
              dataType: 'json',
              success: function(response)
               var variable = [some_array];

      //how to create an variable containing json array and access this variable outside?
                }
           });
      }); alert(variable);

为什么这不起作用?我闻到了一些范围问题...

谢谢。

【问题讨论】:

  • Ajax 是异步的。在回调或回调调用的函数中使用变量。
  • 正如dystroy已经说过的那样,ajax调用之后的代码(在你的情况下是alert)会立即执行,而只有在它被回答后才会调用success。因此,您将无法在成功之外使用这些变量。例如,一种解决方法是定义一个全局函数,该函数将您的变量作为参数,该参数将从成功中调用。

标签: ajax json variables


【解决方案1】:

首先,让我说在回调中更改全局变量不是可行的方法。相反,您应该从回调中触发所有副作用。如果您避免回调通过全局状态相互影响,您会发现您的代码很多更易于推理和调试。

也就是说,如果您希望两个函数“共享”一个变量,只需将其声明在两个都可以看到的地方。

var x = 0; // Declaring this in an outer scope makes f1 and f2 share it.

function f1() {
    x = 1
}

function f2() {
    console.log(x)
}

f1();
f2(); // Prints '1'

负责此行为的功能是closures

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 2014-01-24
    • 2014-08-02
    相关资源
    最近更新 更多