将jQuery Ajax请求的结果设置为全局变量
Setting the Results of a jQuery Ajax Request to a Global Variable
我正在尝试设置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函数中设置全局变量
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 使用eval()设置全局变量
- Ajax设置全局变量,但外部值消失
- 更新后,父视图未在 Electron 中的
上设置全局变量 - 为什么在定义回调/侦听器函数(异步消息传递,port.on)后没有立即设置全局变量
- 如何在不设置全局变量的情况下确定是否已调用函数
- 在函数内设置全局变量
- jQuery / JS设置全局变量,但卡在传递给AJAX自定义函数
- 在 jsdom 加载的脚本中设置全局变量
- 设置全局变量,但未获得预期结果
- 延迟调用 dojo widget 中的函数,直到设置全局变量
- 如何在Javascript中设置全局变量
- ngresource在成功响应中设置全局变量
- 如何在点击事件中设置全局变量
- 通过future函数循环和设置全局变量
- 尝试用javascript函数设置全局变量
- jQuery Ajax Post -无法使用回调函数设置全局变量
- jQuery load()函数不设置全局变量
- 设置全局变量并在jquery/javascript中访问它