J2SE综合:与你一起讨论AJAX进一阶应用
百度广告
解决的问题:当通过AJAX多次提交请求,而服务器端反映比较慢,导致只有最后一个请求被响应的现象。
提交请求:ajaxtest.jsp
var count = 0;
var http_request;
http_request = false;
if(window.XMLHttpRequest) { //Mozilla 浏览器
if (http_request.overrideMimeType) {//设置MiME类别
}
else if (window.ActiveXObject) { // IE浏览器
http_request = new ActiveXObject("Msxml2.XMLHTTP");
try {
} catch (e) {}
}
window.alert("不能创建XMLHttpRequest对象实例.");
}
// 确定发送请求的方式和URL以及是否同步执行下段代码
http_request.send(null);
// 处理返回信息的函数
if (http_request.readyState == 4) { // 判断对象状态
var rtext = http_request.responseText;
"
} else { //页面不正常
}
}
function refreshTable() {
send_request('ajaxtestresponse.jsp?count=' + (++count) + '&refreshtime='+k);
//window.setTimeout('refreshTable()',10000);
响应请求:ajaxtestresponse.jsp
其中,提交请求包含一个技术参数,响应请求延迟5秒左右的时间,再返回请求,以表示系统延迟比较大。
在tomcat中运行http://localhost:8080/ajaxtest.jsp 点击按钮,发送请求,然后等待回应,如果在没有回应之前,连续点击按钮提交请求,虽然后台接收到了这些请求,但是由于对运行状态的判断,web浏览器只能接收到最后一个返回的响应。
为了让浏览器能够全部接受返回的信息,有两个办法:
// 确定发送请求的方式和URL以及是否同步执行下段代码
改为
表示等到响应接收到后,才能进行其它操作, 这样web浏览器发送请求后会有较长时间的停顿,影响客户体验,不好。
2、将
k = new Date();
}
function refreshTable() {
if(http_request.readyState!=4) {
return;
}
send_request('ajaxtestresponse.jsp?count=' + (++count) + '&refreshtime='+k);
增加状态判断,并进行延迟。 客户体验好。
编辑推荐:
温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)
点击加载更多评论>>