Javascript变量未在函数范围之外更改

时间:2013-02-12 15:27:36

标签: javascript jquery python html zope

我有以下功能:

function loginStudent() {
    var advisorKEY = "<dtml-var expr="py_get_alias()">";
    var studentKEY = "<dtml-var SID>";  
    var URL = "py_logging_sessionOpen?AdvisorKEY=" + advisorKEY + "&StudentKEY=" + studentKEY;
    key = "";
    $j.get(URL, function(data) { 
        key = data;
    });
    alert(key);
}

py_loggin_sessionOpen只是我服务器上运行的python脚本 它返回一个字符串。我需要该脚本的响应来确定下一个动作。该脚本完美地返回了值,我可以通过在alert function(data)get放置loginStudent()来轻松检查该值。

我的主要问题是:如何在函数(数据)范围之外更改键值?

我假设因为我在外部定义它会充当全局变量。 将其移到{{1}}之外也无法解决问题。

有什么想法吗?

2 个答案:

答案 0 :(得分:6)

$j.get()将成为异步调用。这意味着它会触发,其余的执行仍在继续。任何依赖于该调用的东西都需要在回调中完成,如下所示:

$j.get(URL, function(data) { 
    key = data;
    alert(key);
} );

如果其他一切都很好,你会看到你期望的价值。

答案 1 :(得分:0)

代码的问题是$j.get异步执行。这就是你将回调传递给它的原因。

如果您希望同步编写异步代码,那么您应该阅读以下答案:https://stackoverflow.com/a/14809354/783743

编辑:您似乎创建了一个名为key的全局变量,并未通过var声明该变量。因此,它应该在其他函数中可见,只要它们在回调后被称为

您是否愿意向我们提供这些其他功能?