请高手帮我解释一下这段JavaScript代码

哪位高手能帮我详细讲解一下这段代码....functioncheckTeamNo(flag){varteamNo=document.forms[0].teamNo.val... 哪位高手能帮我详细讲解一下这段代码....
function checkTeamNo(flag){
var teamNo = document.forms[0].teamNo.value;
var url = "./switchdo.do?prefix=/finance&page=/bxTeamNoCheck.do";
var arg = "teamNo=" + teamNo;
http_requestTrip = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_requestTrip = new XMLHttpRequest();
if (http_requestTrip.overrideMimeType) {
http_requestTrip.overrideMimeType("text/xml");
}
} else if (window.ActiveXObject) { // IE
try {
http_requestTrip = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_requestTrip = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_requestTrip) {
alert("Giving up, Cannot create an XMLHTTP instance.");
return false;
}

http_requestTrip.onreadystatechange = function() {processTextResponse(flag);};

http_requestTrip.open("POST", url, true);
http_requestTrip.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
http_requestTrip.send(arg);
}

function processTextResponse(flag) {
if (http_requestTrip.readyState == 4) {
if (http_requestTrip.status == 200) {
var msgflg = http_requestTrip.responseText;
if(msgflg == "fail"){
alert("该结算团号已经存在,不能进行结算!");
document.forms[0].teamNo.focus();
return;
} else{
if(flag=="0"){
document.forms[0].action="./switchdo.do?prefix=/finance&page=/bxFirstBalance.do&actionType=save";
document.forms[0].target="_self";
document.forms[0].submit();
}else{
alert("该结算团号可以进行结算!");
}
}
} else {
alert("There was a problem with the request.");
return;
}
}
}
展开
 我来答
Super_MVC
2009-12-02 · TA获得超过520个赞
知道答主
回答量:114
采纳率:0%
帮助的人:0
展开全部
呀呀呀,这个javaScript可不是一般的东东了..
一般我们用javaScript主要是用于表单提交验证或者是一些人性化的提示.都是由浏览器全权负责运行.
而这个javaScript,它关系到服务器交互了.很特殊的东西,所以它还有其他的名字,就是堂堂的ajax.异步请求无刷新效果..
在这里我也不太方便每句来写个注释.
可以在线聊或者你自己去看看ajax的东西能掌握得更加全面.

事实上ajax要实现异步请求,几个必须的准备就是.
1,XMLHttpRequest ---请求对象
你上面那一个N长的IF就是为了创建这个东西.
if (window.XMLHttpRequest)
从这里开始,为什么有这么长呢,主要就是为了处理浏览器的兼容问题,什么
IE啊,火狐啊.IE又分IEX等等,所以就这么长了.

2,请求发到哪去了,需要指定一个URL,通过请求对象的OPEN方法发送.
你的代码就是这句:http_requestTrip.open("POST", url, true);

3,发送之后怎么得到响应呢,就根据状态的不同可得.
你的代码:
http_requestTrip.onreadystatechange = function() {processTextResponse(flag);}
对应的方法:processTextResponse里面关键的几句:
if (http_requestTrip.readyState == 4) {
if (http_requestTrip.status == 200) {
var msgflg = http_requestTrip.responseText;

http_requestTrip.readyState == 4 --请求对象与服务器交互有5种不同的状态,分别为连接,连接成功,然后交互,然后响应,响应成功.分别对应的就是0,1,2,3,4..等于4的时候就是响应成功,就可以取数据了.
http_requestTrip.status == 200 --这是服务器运行的结果,200代表成功,404代表服务器页面找不到,500代表服务器处理异常..
http_requestTrip.responseText; ---这个就是服务器响应给你的东西,也就是你最想得到的..

我大致看了一下,你这个javascript主要功能就是无刷新验证输入框中的数据是否在服务器端(数据库)已经存在
zjweii
2009-12-03 · TA获得超过322个赞
知道小有建树答主
回答量:421
采纳率:0%
帮助的人:168万
展开全部
楼上解释的废话连篇

意思就是点击验证的时候不会显式的去刷新页面,而是直接在后面通过ie的ActiveX控件XMLHTTP 或是火狐的XMLHttpRequest对象访问要验证的后台程序.
做到了无刷新
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式