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

Can we save jquery POST/GET callback function's data and status in a variable for further use?

本文关键字:变量 存在 保存 状态 进一步 数据 POST jquery GET 我们 函数      更新时间:2023-09-26

我想将数据和状态的值保存在变量中,并在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);
}

你是绝对正确的; 代码正在正常工作...原因如下:

页面加载并开始运行代码,然后点击 .get 命令,然后继续运行,显然它会进入您接下来的"警报"。由于 .get 函数仍在您的页面进入"警报"部分之前获取数据......没有什么可提示的。

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

这是一种在获取数据的功能附加另一个函数的方法,因此它们相互依赖。

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

更好的方法是将 jqXHR 全局存储,并在需要访问数据时向其添加一个 done 回调。

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