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

Javascript变量未在函数范围外更改,javascript,jquery,python,html,zope,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

我有以下功能:

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);
}
函数loginStudent(){
var advisorKEY=“”;
var studentKEY=“”;
var URL=“py_logging_sessionOpen?AdvisorKEY=“+AdvisorKEY+”&StudentKEY=“+StudentKEY;
key=“”;
$j.get(URL,函数(数据){
键=数据;
});
警报(键);
}
py\u loggin\u sessionOpen
只是在我的服务器上运行的python脚本。
它返回一个字符串。我需要脚本的响应来决定下一个动作。脚本完美地返回了值,我可以通过在
get
中的
函数(数据)
中添加
警报来轻松检查值

我的主要问题是:如何获得要在功能(数据)范围之外更改的键值

我假设,因为我在外部定义了它,它将作为一个全局变量。 将其移出
loginStudent()
也不能解决问题

有什么想法吗?

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

$j.get(URL, function(data) { 
    key = data;
    alert(key);
} );
如果其他一切正常,您将看到您期望的值。

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

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

如果其他一切正常,您将看到您期望的值。

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

如果希望同步编写异步代码,则应阅读以下答案:

Edit:您似乎创建了一个名为
key
的全局变量,方法是不使用
var
声明它。因此,它应该在其他函数中可见,只要它们在回调之后被调用


您愿意为我们提供这些其他函数吗?

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

如果希望同步编写异步代码,则应阅读以下答案:

Edit:您似乎创建了一个名为
key
的全局变量,方法是不使用
var
声明它。因此,它应该在其他函数中可见,只要它们在回调之后被调用


您愿意为我们提供这些其他函数吗?

您想在其他函数中使用它吗?依赖于异步请求结果的所有逻辑必须在请求的回调函数中处理<代码>警报(键)
在异步设置
的值之前被调用。函数。是否要在另一个函数中使用它?依赖于异步请求结果的所有逻辑必须在请求的回调函数中处理<代码>警报(键)在异步设置
的值之前被调用。功能。啊!嗯。谢谢等我同意的时候,我会接受你的回答。啊!嗯。谢谢等我同意的时候,我会接受你的回答。