今天配合软件做个注册页面,验证用户名使用ajax验证的。
.ashx 文件时放在网站目录的Ajax文件夹下的,在自己本地和测试服务器上都好好地,可是一到真实服务器就没效果,可以肯定问题不是出在程序上。
代码
1 /* ajax engine */
2 function ajaxCheck(url,from,name, callBack) {
3 var XHR;
4 var date = new Date();
5 var parameter = "from=" + from + "&name=" + name + "&timeStamp= " + date.getTime();
6 try {
7 try{
8 XHR=new ActiveXObject("Microsoft.XMLHTTP");
9 }catch(e){
10 try{
11 XHR=new XMLHttpRequest();
12 } catch (e){ }
13 }
14 XHR.open("POST",url);
15 XHR.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
16 XHR.onreadystatechange = function(){
17 if(XHR.readyState==4) {
18 if(XHR.status==200) {
19 if(callBack) callBack(from,XHR.responseText);
20 }
21 }
22 }
23 XHR.send(parameter);
24 }catch (e) {
25 //alert(e.toString());
26 }
27 }
28
29
30 /**
31 * 判断用户名是否有重复,上面已经引入方法
32 */
33 function checkAccount(statusID,oID,errorID) {
34 ajaxCheck("/check_user.ashx",'name', $(oID).value, function(from, responseText){
35 if(from == 'name'){
36 var msg = "";
37 if(responseText.search("1")>=0){
38 $innerHTML(errorID,"<img src=\"images/softReg/icon_error.gif\" /> 用户名已经存在");
39 inputStatus(statusID,"0",errorID);
40 isexists = true;
41 return;
42 }else if(responseText.search("0")>=0){
43 $innerHTML(errorID,"");
44 inputStatus(statusID,"2",errorID);
45 isexists = false;
46 return true;
47 }else{
48 $innerHTML(errorID,"<img src=\"images/softReg/icon_error.gif\" /> 异步通信错误");
49 inputStatus(statusID,"0",errorID);
50 isexists = false;
51 return;
52 }
53 }
54 });
55 }
2 function ajaxCheck(url,from,name, callBack) {
3 var XHR;
4 var date = new Date();
5 var parameter = "from=" + from + "&name=" + name + "&timeStamp= " + date.getTime();
6 try {
7 try{
8 XHR=new ActiveXObject("Microsoft.XMLHTTP");
9 }catch(e){
10 try{
11 XHR=new XMLHttpRequest();
12 } catch (e){ }
13 }
14 XHR.open("POST",url);
15 XHR.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
16 XHR.onreadystatechange = function(){
17 if(XHR.readyState==4) {
18 if(XHR.status==200) {
19 if(callBack) callBack(from,XHR.responseText);
20 }
21 }
22 }
23 XHR.send(parameter);
24 }catch (e) {
25 //alert(e.toString());
26 }
27 }
28
29
30 /**
31 * 判断用户名是否有重复,上面已经引入方法
32 */
33 function checkAccount(statusID,oID,errorID) {
34 ajaxCheck("/check_user.ashx",'name', $(oID).value, function(from, responseText){
35 if(from == 'name'){
36 var msg = "";
37 if(responseText.search("1")>=0){
38 $innerHTML(errorID,"<img src=\"images/softReg/icon_error.gif\" /> 用户名已经存在");
39 inputStatus(statusID,"0",errorID);
40 isexists = true;
41 return;
42 }else if(responseText.search("0")>=0){
43 $innerHTML(errorID,"");
44 inputStatus(statusID,"2",errorID);
45 isexists = false;
46 return true;
47 }else{
48 $innerHTML(errorID,"<img src=\"images/softReg/icon_error.gif\" /> 异步通信错误");
49 inputStatus(statusID,"0",errorID);
50 isexists = false;
51 return;
52 }
53 }
54 });
55 }
那到底什么问题了,只得远程着服务器,一步一步的alert,当alert(status) 时返回的竟是404,奇怪了,直接改成http://域名/Ajax/check_user.ashx,还是不行,直接反问这个页面有是正常的,能返回结果,网上找找,很多都是ashx没有添加映射,可是我的是正常的,路径已经这么死了,还是404,会不会是不再同一文件夹下的缘故呢?于是把check_user.ashx 移到网站根目录下,js路径改成/check_user.ashx问题解决,可是不知道为什么。。。。
可能是IIS设置的问题,因为放到另一台服务器上是好的,可是实在找不出问题出在哪。
总会水落石出的,先照着做吧。