1

我有以下功能:

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 脚本。
它返回一个字符串。我需要该脚本的响应来确定下一步操作。该脚本完美地返回了该值,我可以通过alertfunction(data)in 中放置一个来轻松检查该值get

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

我假设因为我在外部定义了它,所以它将充当全局变量。把它移到外面loginStudent()也不能解决问题。

有任何想法吗?

4

2 回答 2

6

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

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

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

于 2013-02-12T15:31:43.210 回答
0

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

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

编辑:似乎您已经创建了一个全局变量key,而不是用var. 因此,只要在回调之后调用它们,它就应该在其他函数中可见。

您愿意为我们提供这些其他功能吗?

于 2013-02-12T15:33:27.777 回答