首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >轮询JSON的API,直到找到特定的密钥

轮询JSON的API,直到找到特定的密钥
EN

Stack Overflow用户
提问于 2014-12-24 17:21:14
回答 1查看 705关注 0票数 1

我正在做一个项目,接受提交和工作的内容。对于提交的工作(例如,作业排队),可以立即获得详细信息/结果页面,但结果不一定已经就绪。

我要做的是动态加载(通过jQuery)结果,以两种不同的方式显示,但只轮询服务器的一个结果集,直到{ "status" : "success" }出现在json中。然后才轮询服务器上的第二个内容表单。

下面是我目前正在做的(直接向前)在页面加载时拉两个数据集的操作。由于JS不是我的强项,我不知道如何在一个定时循环中执行异步调用,直到'status‘键的值为'success',然后显示这两个结果集

如有任何帮助或建议,不胜感激:)

代码语言:javascript
运行
复制
$(document).ready(function()
{
    // Pull in HTML Results
    $.get( "/api/v1/web/analysis/{{jobID}}?html=true", function( data ) 
    {
        console.log(data);
        $( "#results" ).html( data );
    });

    // Pull in raw JSON for this result report
    $.get( "/api/v1/analysis/{{jobID}}", function( data ) 
    {
        console.log(data);
        $("#JSONresults").html( "<pre>"+JSON.stringify(data, undefined, 8)+"</pre>" );
    });

});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-24 18:09:53

我想出了办法,在How to call a function within $(document).ready from outside it的帮助下

代码语言:javascript
运行
复制
function getResults() 
{
    $.ajax(
    {
        url: "/api/v1/analysis/{{jobID}}",
        dataType: 'json',
        error: function(data) 
        {
            // Do nothing / Terminate this function
        },

        success: function(data) 
        {
            if (data.status == 'queued') 
            {
                // Wait 1.5 seconds and poll again
                setTimeout(function() { getResults(); }, 1500);

            } else if (data.status == 'success')
            {

                // Update our HTML formatted results
                $.get( "/api/v1/analysis/{{jobID}}?html=true", function( data ) 
                {
                    console.log(data);
                    $( "#results" ).html( data );
                });

                // Update our JSON content
                $("#JSONresults").html( "<pre>"+JSON.stringify(data, undefined, 8)+"</pre>" );

            } else {

                // Our status code wasn't right...
                alert("A status code was returned that indicates an issue (JSON results say _not_ 'success' or 'queued')")

            }
        },

        contentType: 'application/json'
    });
}

getResults()内部调用$(document).ready(function(){ getResults(); });似乎很有魅力:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27640308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档