来自$ .get的jQuery数据不可用于其他功能

时间:2011-10-26 01:08:43

标签: jquery get global-variables

大家好我已经得到了这段代码,但它一直在踢'undefined;

var projectID = $.getUrlVar('id');
var projectname;

$.get('functions.php?func=projectname&id='+projectID, function(data) {
    projectname = data;
    alert(projectname+'<- see nice content');
});

alert(projectname+'<- no content :(');

如何在一个获取功能之外使“projectname”可用?

(我注意到,当实际运行该代码时,在好内容之前弹出无内容警报。是.get是运行页面上的最后一件事吗?这就是为什么它全部空白?因为变量不是似乎已经确定了?

感谢

3 个答案:

答案 0 :(得分:5)

AJAX以异步方式运行(这是A首字母缩略词中的第一个AJAX代表的。

所以你有两个解决方案可以解决你的问题:

  1. 不要尝试访问匿名函数之外的数据。做那里的所有工作(最好的解决方案)
  2. 将您的$.get更改为$.ajax并将其async选项设为false(可怕的解决方案)

答案 1 :(得分:2)

这里的问题是你的第二个警报实际上是在AJAX请求完成之前执行的。

“AJAX”中的“A”代表异步。

任何依赖于从AJAX请求返回的数据的功能都只能在success回调中实现或调用

答案 2 :(得分:0)

因为XHR是异步的,所以你不能那样。

将所有代码作为后代函数处理,更深入地在callstack上,源自完整的回调(其中projectname将分配正确的值)。