我们可以将jquery POST / GET回调函数的数据和状态保存在变量中以供进一步使用吗?

时间:2013-09-27 16:05:12

标签: javascript jquery get

我想在变量中保存数据和状态的值,并在jquery GET / POST函数的右括号后使用它。但只有当它在.get括号内时才会出现警告。

$(document).ready(function(){
    $.get("demo_test.asp",function(data,status){
         v = data;
     });
 alert("Data:"+v);
 });

3 个答案:

答案 0 :(得分:0)

正如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);
}

答案 1 :(得分:0)

你是完全正确的;代码工作正常......这就是原因:

页面加载并开始运行代码,然后它会点击.get命令然后继续运行,显然会使其进入下一个“警报”。由于.get函数在您的页面进入“警报”部分之前仍在处理数据...因此无法提示。

您可能希望在.get之后使用延迟对象将事物串在一起。请查看:http://api.jquery.com/deferred.always/

这是一种解决获取数据的另一个 函数的方法,因此它们相互依赖。

答案 2 :(得分:0)

简单回答,是的,您可以将数据存储在全局变量中并在其他地方访问它。但是,您必须等到它准备好。

更好的方法是改为全局存储jqXHR,只需在需要访问数据时向其添加完成回调。

var reqDemoTest = $.get(...);
//... some time later...
reqDemoTest.done(function(data){
    console.log(data);
});