comet除了你去调用 它自己定时提交数据为什么是空的,而且进不了onSuccess方法中。

_忆_ 发布于 2013/08/10 12:12
阅读 272
收藏 0
var Comet = Class.create();
Comet.prototype = {
  timestamp: 0,
  url: 'ReadyOkServlet',
  noerror: true,
  initialize: function() { },
  connect: function()
  {
    this.ajax = new Ajax.Request(this.url, {
      method: 'post',
      parameters: { 'timestamp' : this.timestamp },
      onSuccess: function(transport) {
        // handle the server response
     alert("onSuccess");
        var response = transport.responseText.evalJSON();  //转换成json对象
       
        this.comet.timestamp = response['timestamp'];
        this.comet.handleResponse(response);    //处理返回结果方法
        this.comet.noerror = true;
      },
      onComplete: function(transport) {
    // alert("onComplete");
        // send a new ajax request when this request is finished
        if (!this.comet.noerror)
          // if a connection problem occurs, try to reconnect each 5 seconds
          setTimeout(function(){ comet.connect() }, 5000); 
        else
          this.comet.connect();
        this.comet.noerror = false;
      }
    });
    this.ajax.comet = this;
  },

  disconnect: function()
  {
  },
  
  //处理返回数据的方法
  handleResponse: function(response)
  {
 alert("handleResponse");
 alert(response);
   // $('content').innerHTML += '<div>' + response['msg'] + '</div>';
  },
 
  doRequest: function(request)
  {
var request = request;
    new Ajax.Request(this.url, {
      method: 'post',
      parameters: {state:request.state,layoutStr:request.layoutStr,tableNum:request.tableNum}
    });
  }
}
var comet = new Comet();
comet.connect();


能解析要几个方法的调用步骤和作用以及生命周期吗?

加载中
0
几点人
几点人
你给出的例子是Comet客户端的例子。客户端过程解析如下:
  1. 创建comet对象,
  2. 进行连接即comet.connect()
  3. comet.do_request(...);
  4. 进入连接保持状态中
  5. 有消息到达,进入onSucess(),然后就是onComplete();
  6. 再次进入连接保持状态
  7. (循环上述两步骤)
0
几点人
几点人
建议看看webSocket的知识,这个可以用webSocket替代。
返回顶部
顶部