var xmlHttp=false;
function createXMLHttp(){
try{
xmlHttp=new XMLHttpRequest();
}catch(trymicrosoft){
try{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}catch(othermicrosoft){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}catch(failed){
xmlHttp=false;
}
}
}
if(!xmlHttp){
alert("无法创建 XMLHttpRequest 对象!");
}
}
function Ajaxcheck(){
var num=document.myform.uname.value;//获得表单的数据
var url="check.php?n="+num;
createXMLHttp();
xmlHttp.open("GET",url,true);//这里的true代表是异步请求
xmlHttp.onreadystatechange=updatePage;
xmlHttp.send(null);
}
 
function updatePage(){
if(xmlHttp.readyState==4){
var response=xmlHttp.responseText;
if(response=="ok"){
document.myform.nameerr.value="√";
return true;
}else if(response=="no"){
document.myform.nameerr.value="×用户名已占用";
return false;
}else{
document.myform.nameerr.value="服务器出现问题";
return false;
}
}

代码如上,我是用Ajax检测用户名是否存在,在火狐中,要是英文母的名字,可以正常,要是中文名字就判断不出来了,怎么回事啊?????

解决方案 »

  1.   

    应该是在Ajaxcheck 发送请求的时候出错,可能是中文导致的问题,
    你可以在check.php页面里面echo 用户名,看取到的是否是乱码, 如果是乱码的话用urlencode处理一下
      

  2.   

    var url="check.php?n="+num; 
    url=encodeURI(url);
      

  3.   

    var num=document.myform.uname.value;//获得表单的数据 
    //————火狐不支持直接通过表单取值,还是用ID吧!
      

  4.   

    我把用户名输出了,确实是乱码,但是我用了encodeURI()转换了一下,也是不行啊
      

  5.   

    用encodeURI()转换了也没效果啊
      

  6.   

    在check.php页面里面echo 用户名,看取到的是否是乱码, 如果是乱码的话用urlencode处理一下
      

  7.   

    数据库编码是什么?注册页面脚本编码是什么?两个是一致吗?,不一致的话得用iconv()函数将数据字符编码转换一下
      

  8.   

    我在check.php中用了urlencode来处理$name,那么在sql语句中,就是编码了啊。怎么在JS中给用户名编码啊??然后在php中又怎么解编码呢?
      

  9.   

    我数据库里,数据库,表,字段都是用的gb2312,在check.php中也加入了mysql_query("set character set gb2312");
      

  10.   


    楼主我刚才模拟了一下你的程序,我在check.php文件中加了
    $_REQUEST["n"] = iconv("utf-8","GBK",$_REQUEST["n"]);
    后火狐中成功,你试试!