当使用AJAX进行信息交互的时候,如果服务器返回的信息比较大,那么相对于传送完成之后的统一显示,流式显示就比较友好了。
			流式实现
			原理就是设置定时器,定时的查看AJAX对象的状态并更新内容,如果传送完成,就取消定时器。
			 
			复制代码代码如下:
			
		function ajax_stream(url,data,element) {
		    var xmlHttp=null;
		    if (window.XMLHttpRequest)
		      {// code for IE7, Firefox, Opera, etc.
		      xmlHttp=new XMLHttpRequest();
		      }
		    else if (window.ActiveXObject)
		      {// code for IE6, IE5
		      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		      }
		    if (xmlHttp==null)
		      {
		      alert("Your browser does not support XMLHTTP.");
		      element.val('Your browser does not support XMLHTTP. Click the LOG link to monitor the procedure.');
		      return 0;
		      }
		    var xhr = xmlHttp;
		    xhr.open('POST', url, true);
		    // 如果需要像 HTML 表单那样 POST 数据,请使用 setRequestHeader() 来添加 HTTP 头。然后在 send() 方法中规定您希望发送的数据:
		    xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
		    xhr.send(data);
		    var timer;
		    timer = window.setInterval(function() {
		        if (xhr.readyState == XMLHttpRequest.DONE) {
		            window.clearTimeout(timer);
		        }
		        element.val(xhr.responseText);
		    }, 1000);
		}
			 
			post数据转换
			由于标准实现中的send只能接受以下几种输入,所以需要提前对需要传递的数据对象转换为字符串或者FormData格式,这一点就不如JQuery的方便了,但是JQuery如何在传输中间实现事件响应还不得而知,所以不能用,再或者把所有的对象转换中JSON。
			 
			复制代码代码如下:
			
		void send();
		void send(ArrayBuffer data);
		void send(Blob data);
		void send(Document data);
		void send(DOMString? data);
		void send(FormData data);
			 
			下面是转换的代码,如果浏览器支持FormData就转换,否则转成字符串。
			 
			复制代码代码如下:
			
		function ajax_generate_data(jsobj) {
		    var i;
		    if (window.FormData) {
		        var data = new FormData();
		        for i in jsobj {
		            data.append(i,jsobj[i]);
		        }
		    } else {
		        var data = '';
		        var datas = [];
		        for i in jsobj {
		            // for the values so that possible & contained in the strings do not break the format
		            var value = encodeURIComponent(jsobj[i]);
		            datas.append(i + '=' + value);
		        }
		        data = datas.join('&')
		    }
		    console.log(data);
		    return data;
		}