gpt4 book ai didi

jquery - 如何在 jQuery 中存储 JSON 响应?

转载 作者:行者123 更新时间:2023-11-30 23:58:50 24 4
gpt4 key购买 nike

我想将我的 json 响应存储在全局变量中,这样我就可以通过我的应用程序使用它,而无需多次发出 getJSON 请求。

var data;
$.getJSON("panorama.json",function(json){
data = json.images[0].src;
console.log(data);
});


console.log(data);

如果我将其记录在实际请求中,那就没问题,但在其他地方我都会得到“未定义”。任何评论都适用。

编辑[从评论复制]:尝试过...

$.myglobals = { result: "unset" } 

$(document).ready(function() {

$.getJSON( "panorama.json", function(json) {
$.myglobals.result = json.images[0].src;
console.log($.myglobals.result);
});

console.log($.myglobals.result);
}) ;

第一个日志没问题,第二个日志未定义。

编辑[从答案复制]:

actually both method worked

the interesting thing is that my request was in a function and i tried to acces my global variable right after the request in the same function

when i accesed it outside the function it worked like a charm

最佳答案

如果您的实际代码是这样构造的,那么您在尝试访问尚未设置的数据时会遇到问题。尚未。仅仅因为您的 $.getJSON() 位于 console.log() 之上,并不意味着您在记录数据值之前就获得了响应。

因此,您的问题不是范围,而是时间:引入一些服务器端延迟,您的解决方案也可能会崩溃。

如果收到响应,也许您应该设置一些标志:

var data, dataReceived = false;

$.getJSON("panorama.json",function(json){
data = json.images[0].src;
dataReceived = true;
console.log(data);
});


// somwhere later
if (dataReceived) {
console.log(data);
} else {
// you could use setTimeout() or setInterval here to re-check
console.log("data not received yet");
}

关于jquery - 如何在 jQuery 中存储 JSON 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1019350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com