我是一个初学者到中级的JavaScript/jQuery程序员,因此非常感谢具体/可执行的例子.
我的项目需要使用AJAX来轮询返回包含要添加到DOM的内容的JSON的URL,或者使用消息{"status":"pending"}来表示后端仍在使用内容生成JSON响应.这个想法是对URL的第一个请求触发后端开始构建JSON响应(然后缓存),后续调用检查这个JSON是否准备就绪(在这种情况下它是提供的).
在我的脚本中,我需要以15秒的间隔轮询此URL,最多1:30分钟,并执行以下操作:
我尝试了一些方法,但成功有限,但我觉得它们比他们需要的更加混乱.这是一个骨架函数,我成功地使用它来一次制作一个AJAX请求,如果我从JSON响应中获得可用内容,它就能完成它的工作:
// make the AJAX request
function ajax_request() {
$.ajax({
url: JSON_URL, // JSON_URL is a global variable
dataType: 'json',
error: function(xhr_data) {
// terminate the script
},
success: function(xhr_data) {
if (xhr_data.status == 'pending') {
// continue polling
} else {
success(xhr_data);
}
},
contentType: 'application/json'
});
}
Run Code Online (Sandbox Code Playgroud)
但是,除非收到包含可用内容的有效JSON响应,否则此函数当前不执行任何操作.
我不知道该怎么做只是评论.我怀疑另一个函数应该处理轮询,并_
根据需要调用ajax request(),但我不知道ajax _
request()将其结果传递回轮询函数的最优雅方式,以便它可以适当地响应.
很感谢任何形式的帮助!如果我能提供更多信息,请告诉我.谢谢!