JQuery获取流内容而不冻结浏览器

时间:2013-12-09 19:29:00

标签: jquery ajax

如果这个问题看似重复,我很抱歉,但在其他任何一个问题中,我都找不到能够正确解释问题和解决方案的答案。

我有一个python应用程序在处理请求时流式传输一些HTML数据(并且流正常工作),在客户端我希望在服务器发送新数据时更新一个框。我提出了一个JQuery get请求,按下按钮就会触发该请求。

问题是只有在jQ请求完成时才会更新框,所以问题是: 是否可以在执行请求jQ请求时更新HTML(DOM)?

代码


$(document).ready(function(){

  $('#rescanevts').on('click',
    function(e) {
      $('#output').show();


      $.get('/actions/rescan/events/switch/{{data.switch.id}}',function(data) {
    $('#output').append(data)
      });
    }
  );    
});

1 个答案:

答案 0 :(得分:0)

我开始研究googlenet并找到了一些替代方案,但其中大部分没有记录(jQuery Stream又名门户网站)和其他我们真的模糊到像我这样的菜鸟。

我发现了onreadystatechange的{​​{1}}属性,并用它来更新我的消息框中的HTML。代码下方

$(document).ready(function(){
  var outframe = $('#outcontent');

  // Function which will be called whenever the XML requester has a state
  // change (normally new data being received) and will update the full content
  // with new data (including what was already in the buffer)
  // This can be expensive in long streams
  function reqListener () {
    outframe.html(this.responseText);
  };

  $('#rescanevts').on('click',
    function(e) {
      $('#output').show();
      // The XMLHttpRequest 
      var oReq = new XMLHttpRequest();
      oReq.open("get", "/actions/rescan/events/switch/{{data.switch.id}}", true);
      oReq.onreadystatechange = reqListener;
      oReq.send();
    }
  );    
});