我想将数据和状态的值保存在一个变量中,并在 jquery GET/POST 函数的右括号之后使用它。但是只有当它在 .get 大括号内时才会发出警报。
$(document).ready(function(){
$.get("demo_test.asp",function(data,status){
v = data;
});
alert("Data:"+v);
});
我想将数据和状态的值保存在一个变量中,并在 jquery GET/POST 函数的右括号之后使用它。但是只有当它在 .get 大括号内时才会发出警报。
$(document).ready(function(){
$.get("demo_test.asp",function(data,status){
v = data;
});
alert("Data:"+v);
});
正如 Jasper 所说,您alert
在请求完成之前被触发(异步!)。所以,你有两个选择:
在回调中执行您的逻辑:
$.get("demo_test.asp",function(data,status){
v = data;
alert("Data:"+v);
//Process stuff here
});
或者将收到的数据传递给data
另一个函数并在那里使用它
$.get("demo_test.asp",function(data,status){
v = data;
doStuff(v);
});
function doStuff(param) {
console.log(param);
}
简单的回答,是的,您可以将数据存储在全局变量中并在其他地方访问它。但是,您必须等到它准备好。
更好的方法是改为全局存储 jqXHR,并在需要访问数据时简单地添加一个 done 回调。
var reqDemoTest = $.get(...);
//... some time later...
reqDemoTest.done(function(data){
console.log(data);
});
你是绝对正确的;代码正在正常工作……原因如下:
页面加载并开始运行代码,然后点击 .get 命令,然后继续运行,显然会使其进入下一个“警报”。由于 .get 函数仍在您的页面进入“警报”部分之前获取数据......没有什么需要提示的。
您可能希望在 .get 之后使用延迟对象将内容串在一起。查看:http ://api.jquery.com/deferred.always/
这是一种在获取数据的函数中附加另一个函数的方法,因此它们相互依赖。