gpt4 book ai didi

javascript - 将 jQuery Ajax 请求的结果设置为全局变量

转载 作者:行者123 更新时间:2023-12-03 09:55:57 25 4
gpt4 key购买 nike

我正在尝试设置 ajax 请求的结果,以便它在我的代码中全局可用。我最初尝试将请求包装在函数中,返回数据,然后为该函数调用设置一个全局变量,但它只是返回为未定义。我不知道如何继续。

var myId = getMyId();

getMyId();
function getMyId(){
$.ajax({
url: '/who_am_i',
method: 'GET',
dataType: 'json',
success: function(data) {
return data;
}
});
}
console.log(myId);

如果您需要代码来理解我的问题,上面的代码不起作用。我正在努力寻找一个可以做到的

最佳答案

var myId;

function getMyId(){
$.ajax({
url: '/who_am_i',
method: 'GET',
dataType: 'json',
success: function(data) {
// you dont return vars from a async callback, from here you can access the global scope like this
myId = data;
}
});
}

getMyId(); // execute it

只有在回调完成后,您才能使用 myId 变量。因此,也许调用函数会更好,这样您就可以更好地控制执行流程。

var myId;

function getMyId(){
$.ajax({
url: '/who_am_i',
method: 'GET',
dataType: 'json',
success: function(data) {
init(data);
}
});
}

function init(data){
myId = data;
// do your stuff here to guarantee that myId is populated
}

getMyId(); // execute it

很抱歉说得这么冗长,但更好的是:

var myId;

function getMyId(callback){
$.ajax({
url: '/who_am_i',
method: 'GET',
dataType: 'json',
success: callback
});
}

function init(data){
myId = data;
// do your stuff here to guarantee that myId is populated
}

getMyId(init); // execute it

实现相同结果的几种方法应该可以帮助其他人理解异步调用中的数据流。

关于javascript - 将 jQuery Ajax 请求的结果设置为全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30737271/

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