2013-03-23 46 views
2
$(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); 

为什么这不起作用?我闻到一些范围问题...Javascript:如何在ajax“成功”函数中创建变量?

谢谢。

+2

Ajax是异步的。在回调中或在回调所调用的函数中使用变量。 – 2013-03-23 11:40:12

+0

由于dystroy已经陈述过,ajax调用之后的代码(在你的情况下是alert)立即执行,而成功只有在被应答后才被调用。因此,您无法在成功之外使用这些变量。一个解决方法是例如定义一个全局函数,它把你的变量作为一个参数,这个参数将在成功的时候被调用。 – Appleshell 2013-03-23 11:46:52

回答

0

首先,让我说,改变一个回调内的全局变量是不是要走的路。您应该从回调中引发所有副作用。如果避免通过全局状态相互影响的回调,您会发现代码是lot更易于推理和调试。这就是说,如果你想要两个函数“共享”一个变量,只需在外部都可以看到它的地方声明它。

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

相关问题