1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <script type= "text/javascript" > function btnClick () { try { // Firefox, Opera 8.0+, Safari, IE7 xmlHttp = new XMLHttpRequest(); } catch ( e) { // Old IE try { xmlHttp = new ActiveXObject( "Microsoft.XMLHTTP" ); } catch ( e) { alert ( "Your browser does not support XMLHTTP!" ); return ; } } if (! xmlHttp) { alert ( "创建 xmlHttp对象异常" ); return false ; } xmlHttp .open( "POST" , "GetDate1.ashx?ts" + new Date(), false ); //准备向服务器的GetDate.ashx发出 Post请求 //XMLHTTP默认(也推荐)不是同步请求,而是异步。 open方法并不像WebClient的 DownloadString那样把服务器返回的数据拿到才返回。 //需要监听onreadystatechange 事件 xmlHttp .onreadystatechange = function () { if ( xmlHttp.readyState == 4 ) { // 服务器完成 if ( xmlHttp.status == 200 ) { // 如果状态码是 200,则是成功 document.getElementById( "Text1" ).value= xmlHttp.responseText ; //responseText是服务器返回的文本 } else { alert ( "AJAX服务器返回错误 " ); } } } xmlHttp .send(); } </script > |
如果改成如下方式
xmlHttp . open( "GET" , "GetDate1.ashx?"ts" + new Date (), false );
那么发出请求以后
发现点击按钮,时间不更新
并且在Stream中没有请求。
这是因为:xmlHttp . open( "GET" , "GetDate1.ashx?"ts" + new Date (), false );每次都发送一样的请求给服务器,AJAX直接从服务器缓存中取值,而不进行处理 ts" + new Date ()表示删除
这样会直接从服务器缓存中获得,所以要加上一个每次都会变的值,使得每次的请求都不同,这样就不会从缓存中取值。
用Jquery实现的代码是:
function btnClick2() {
var time = new Date();
var second = time.getSeconds();
$.get( "GetDate1.ashx", { id: 33, tr: second }, function (data) {//同样这里要有一个变化的值
$( "#Text1").val(data);
})
}