2014-01-11 44 views
1

是否有可能从jquery get分配数据到全局变量?这是我正在尝试做的一个非常简化的版本。分配jquery获取返回值到一个全局变量

var page; 
    $.get("view/tenantHome.html", function(data){page = data;}); 
    console.log(page); 
+1

我不明白为什么不;它不工作? –

+0

是的,您可以将返回值分配给全局变量 – Kamlesh

+1

是的,但问题在于Ajax本质上是异步的。不能保证调用会在'console.log()'行之前返回。实际上,99.9%的时间不会。 – acdcjunior

回答

4

尝试回调到打印函数内部的值

$.get("view/tenantHome.html", function(data){ 
    page = data; 
    console.log(page); 
}); 
1

与AJAX你所要使用像

function callback(data){ 
    console.log(data); 
}; 
$.get("view/tenantHome.html", function(data){callback(data)}); 
0

$.get是在jQuery的做AJAX的速记方法。 These methods are asynchronous by default,所以你正在运行的可以被称为race condition。我想你会在继续使用jQuery进行开发并使用AJAX时阅读这些概念。

$ .get有一个回调参数选项,一旦接收到响应就会调用该参数,该回调会显示在您的原始代码中。

var page; 
$.get("view/tenantHome.html", function(data){page = data;}); 
console.log(page); 

你可以做一些简单的像encapsulate取决于在功能page变量的代码。

var page; 
$.get("view/tenantHome.html", function(data){ 
    page = data; 
    codeThatDependsOnPageVariable(); 
}); 

function codeThatDependsOnPageVariable() { 
    console.log(page); 
} 

通过这种方式,您可以在确保拥有必要的数据后调用代码块。

1

有2种方式

异步(推荐):

var page; 
$.get("view/tenantHome.html", function(data){ 
    page = data; 
    console.log(page); 
}); 

同步(不推荐);

$.ajaxSetup({async: false}); 
var page; 
$.get("view/tenantHome.html", function(data){ page = data; });  
console.log(page); 
$.ajaxSetup({async: true}); 

第二个不推荐,因为它会阻止脚本执行,直到ajax调用完成。但是,有些情况下您可能需要它。

希望这会有所帮助。欢呼声

0

.get()函数返回包含回调函数.done(), .fail(), .always()的延迟对象。现在你只处理回调,你不知道失败。使用这个:

$.get('view/tenantHome.html').done(function(result){ 
    page = data; 
    console.log(page); 
}).fail(function() { console.log('Request fail'); }); 

现在你可以处理失败。 不要在生产中使用async: false,而正在进行的请求中,您的页面将被冻结,并且通常所有的browther页面都会被冻结。

相关问题