是否有可能从jquery get分配数据到全局变量?这是我正在尝试做的一个非常简化的版本。分配jquery获取返回值到一个全局变量
var page;
$.get("view/tenantHome.html", function(data){page = data;});
console.log(page);
是否有可能从jquery get分配数据到全局变量?这是我正在尝试做的一个非常简化的版本。分配jquery获取返回值到一个全局变量
var page;
$.get("view/tenantHome.html", function(data){page = data;});
console.log(page);
尝试回调到打印函数内部的值
$.get("view/tenantHome.html", function(data){
page = data;
console.log(page);
});
与AJAX你所要使用像
function callback(data){
console.log(data);
};
$.get("view/tenantHome.html", function(data){callback(data)});
的$.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);
}
通过这种方式,您可以在确保拥有必要的数据后调用代码块。
有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调用完成。但是,有些情况下您可能需要它。
希望这会有所帮助。欢呼声
.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页面都会被冻结。
我不明白为什么不;它不工作? –
是的,您可以将返回值分配给全局变量 – Kamlesh
是的,但问题在于Ajax本质上是异步的。不能保证调用会在'console.log()'行之前返回。实际上,99.9%的时间不会。 – acdcjunior