相关疑难解决方法(0)

jQuery AJAX轮询JSON响应,基于AJAX结果或JSON内容进行处理

我是一个初学者到中级的JavaScript/jQuery程序员,因此非常感谢具体/可执行的例子.

我的项目需要使用AJAX来轮询返回包含要添加到DOM的内容的JSON的URL,或者使用消息{"status":"pending"}来表示后端仍在使用内容生成JSON响应.这个想法是对URL的第一个请求触发后端开始构建JSON响应(然后缓存),后续调用检查这个JSON是否准备就绪(在这种情况下它是提供的).

在我的脚本中,我需要以15秒的间隔轮询此URL,最多1:30分钟,并执行以下操作:

  • 如果AJAX请求导致错误,请终止脚本.
  • 如果AJAX请求成功,并且JSON内容包含{"status":"pending"},则继续轮询.
  • 如果AJAX请求导致成功,并且JSON内容包含可用内容(即除了""status":"pending"}之外的任何有效响应),则显示该内容,停止轮询并终止脚本.

我尝试了一些方法,但成功有限,但我觉得它们比他们需要的更加混乱.这是一个骨架函数,我成功地使用它来一次制作一个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()将其结果传递回轮询函数的最优雅方式,以便它可以适当地响应.

很感谢任何形式的帮助!如果我能提供更多信息,请告诉我.谢谢!

javascript ajax jquery json polling

46
推荐指数
1
解决办法
4万
查看次数

标签 统计

ajax ×1

javascript ×1

jquery ×1

json ×1

polling ×1