我正在做一个项目,接受提交和工作的内容。对于提交的工作(例如,作业排队),可以立即获得详细信息/结果页面,但结果不一定已经就绪。
我要做的是动态加载(通过jQuery)结果,以两种不同的方式显示,但只轮询服务器的一个结果集,直到{ "status" : "success" }
出现在json中。然后才轮询服务器上的第二个内容表单。
下面是我目前正在做的(直接向前)在页面加载时拉两个数据集的操作。由于JS不是我的强项,我不知道如何在一个定时循环中执行异步调用,直到'status‘键的值为'success',然后显示这两个结果集
如有任何帮助或建议,不胜感激:)
$(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>" );
});
});
发布于 2014-12-24 18:09:53
我想出了办法,在How to call a function within $(document).ready from outside it的帮助下
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(); });
似乎很有魅力:)
https://stackoverflow.com/questions/27640308
复制相似问题