javascript - 变量值仅在我发出警报时才有效?

标签 javascript jquery

变量 g 的值应该传递给百分比属性 但是如果我在传递百分比之前不警告(g),它会给出 g 的值未定义。给出“解析值时出错”。 语言是js/jquery。

var g;     
function refreshCounts() {
    var url = 'https://graph.facebook.com/v2.8/?ids=' + postID + '&fields=' + reactions + '&access_token=' + access_token;
    $.getJSON(url, function(res){

        g = (defaultCount + res[postID].reactions_like.summary.total_count);

    });


}

$(document).ready(function(){

    setInterval(refreshCounts, refreshTime * 1000);
    refreshCounts();  
   alert(g);
    $('#jq').LineProgressbar({
        percentage:g,
        radius: '3px',
        height: '20px',
        });
});

最佳答案

AJAX 中的 A 代表异步。

在 RefreshCounts 中,您启动异步调用来填充 g,该调用在 AJAX 请求完成时调用的回调中设置。然后 RefreshCounts 退出。此时回调可能发生也可能没有发生。

当执行alert时,它会暂停处理直到用户接受,从而给AJAX调用时间来完成(并填充g)。如果没有警报,处理会立即移至下一行,此时 g 可能尚未设置。

要解决此问题,请尝试:

var g;     
function refreshCounts() {
    var url = 'https://graph.facebook.com/v2.8/?ids=' + postID + '&fields=' + reactions + '&access_token=' + access_token;
    $.getJSON(url, function(res){

        g = (defaultCount + res[postID].reactions_like.summary.total_count);
        $('#jq').LineProgressbar({
            percentage:g,
            radius: '3px',
            height: '20px',
            });
    });
}

$(document).ready(function(){
    setInterval(refreshCounts, refreshTime * 1000);
    refreshCounts();  
});

关于javascript - 变量值仅在我发出警报时才有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44731083/

相关文章:

javascript - 我如何从下拉菜单中的数据库中获取数据

javascript - 正则表达式匹配数据推文中的标签、提及、网址和特殊字符

javascript - 如何让javascript在页面加载后发送ajax数据而无需按钮?

javascript - "async"的使用已被弃用。在 ajax/Jquery 中进行同步调用的替代方法

javascript - 涉及 jQuery 的鼓机排序

javascript - jQuery 正在刷新页面

jquery - 如何动态启动 Bootstrap Modal 中的现有 HTML 内容,而无需为每个链接提供模态 html?

javascript - 固定在窗口顶部的div

javascript - self 在 jquery/javascript 中有什么用?

javascript - 如何在 JavaScript 中切换特定的 div