var xmlHttp;//XMLHTTPRequest对象 /** *校验登录名的方法 *这里使用XMLHTTPRequest对象来进行AJAX的异步数据交互 */ function verify() { /** *0.使用dom方式获取文本框中的数据 *document.getElementById("loginName")是dom中获得元素节点的一种方法 *.value可以获得一个元素的value属性值 */ var loginName = document.getElementById("loginName").value; if (loginName == null || loginName == "") { return; } /** *1.创建XMLHTTPRequest对象 */ createXMLHttpRequest(); /** *2.注册回调函数 *注册回调函数时,只要函数名,不要加括号 *我们需要注册函数名,如果加括号,就会注册函数返回值,这是错误的 */ xmlHttp.onreadystatechange = callback; /** *3.设置连接信息 *第一个参数表示http的请求方式,支持所有http请求方式,主要是用GET和POST *第二个参数表示请求的url地址,GET方式请求的参数也在url中 *第三个参数表示与服务器的交互方式,true表示异步,false表示同步 */ /** *解决中文乱码问题 *1.页面请求的数据做一次encodeURI,服务器使用new String(old.getBytes("iso8859-1"),"gbk"); *2.页面请求数据做两次encodeURI,服务器端做两次解码URLDecoder.decode(loginName, "gbk"); */ var url = "/crm/user.do?op=verifyName&loginName=" + encodeURI(loginName); xmlHttp.open("GET", url, true); /** *4.发送数据,开始和服务器端进行交互 *同步方式下,send方法在服务器端数据回来后才执行完 *异步方式下,send方法立即执行结束 */ xmlHttp.send(null); } /** *检测登录名的回调函数 */ function callback() { /** *5.接收响应数据 */ /*判断XMLHTTPRequest对象的状态是交互完成*/ if (xmlHttp.readyState == 4) { /*判断http是否交互成功*/ if (xmlHttp.status == 200) { /*获取服务器返回的数据*/ /*以纯文本方式获得返回数据*/ var responseText = xmlHttp.responseText; /*通过dom方式获得对应div/span元素*/ var node = document.getElementById("loginNameError"); if (responseText != null && "" != responseText) { /*将数据显示给用户*/ /*设置节点中的html内容*/ node.innerHTML = "<font color='red'>" + responseText + "</font>"; /*选中文本框中的内容*/ document.getElementById("loginName").focus(); document.getElementById("loginName").select(); return false; } else { node.innerHTML = ""; } } } } /** *创建XMLHTTPRequest对象的方法 *这是使用XMLHTTPRequest对象最复杂的一步 *需要针对IE和Firefox等不同类型浏览器的不同对象写不同的创建代码 */ function createXMLHttpRequest() { if (window.XMLHttpRequest) { /*针对Firefox、Mozillar、Oprea、Safari、IE7、IE8*/ xmlHttp = new XMLHttpRequest(); /*针对某些特定版本的Mozillar浏览器的BUG进行修正*/ if (xmlHttp.overrideMimeType) { xmlHttp.overrideMimeType("text/xml"); } } else { if (window.ActiveXObject) { /*针对IE6、IE5.5、IE5 *两个可以创建XMLHTTPRequest对象的控件名称存放在js数组中 *前一个版本较新 */ var activexName = ["MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]; for (var i = 0; i < activexName.length; i++) { try { /*取出一个控件名进行创建,如果创建成功结束循环 *如果创建失败,会抛出异常,然后可以继续循环,继续尝试创建 */ xmlHttp = new ActiveXObject(activexName[i]); break; } catch (e) { } } } } /*确认XMLHTTPRequest对象创建成功*/ if (!xmlHttp) { alert("/u60a8/u5f53/u524d/u6d4f/u89c8/u5668/u4e0d/u652f/u6301/u672c/u529f/u80fd/uff0c/u8bf7/u66f4/u6362/u66f4/u9ad8/u7248/u672c/u6d4f/u89c8/u5668/uff01"); return; } }