xuesan18 2015-01-10 03:53 采纳率: 100%
浏览 2291
已采纳

php接收ajax post数据编码只能是gb2312

各位大侠,我是一名初学者,用ajax post方式做的登录模块,提交数据到php,发现用gb2312编码能正常接收数据,用utf-8编码php端就没有反应。我的各个网页均已经设为utf-8编码了,为什么会这样?还有用gb2312发送后,服务器端能正常查询数据库,但是返回数据‘1’后,在js代码里面if与‘1’比较却不相等,结果进入else代码,是否也是编码格式不相同的问题?烦请各位大侠帮忙指点迷津,谢谢!
js代码如下:function loginphp(){

xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
      msg = xmlhttp.responseText;
    if(msg == '1'){
        document.getElementById("login").innerHTML="登录成功!";
    }else if(msg=='2'){
        document.getElementById("login").innerHTML="用户名或密码错误!";
    }else{
        document.getElementById("login").innerHTML=msg;
    }
}

}
xmlhttp.open("POST","application/reglog/login.php",true);
//xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");

xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gb2312");
xmlhttp.send("email="+$('email').value+"&pwd="+$('pwd').value);
}

php代码如下:
<?php
include_once "dbconn.php";
$sql = "select * from Basicinfo_user where user_email='".$_POST['email']."' and user_password='".$_POST['pwd']."'";
$num = $conne->getRowsNum($sql);
$conne->close_conn();
if($num == 1){
echo '1';
}else if($num == 0){
echo '2';
}else{
echo $conne->msg_error();
}
?>

  • 写回答

4条回答 默认 最新

  • Go 旅城通票 2015-01-10 04:21
    关注

    encodeURIComponent编码下发送的内容试试,应该是乱码了导致你的服务器出问题,你的回调函数里面又没有判断服务器错误的代码,就相当于没反应了

    
    xmlhttp.send("email="+encodeURIComponent($('email').value)+"&pwd="+encodeURIComponent($('pwd').value));
    

    回调增加错误处理

     xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4) {
          msg = xmlhttp.responseText;
            if( xmlhttp.status==200){/////////////
        if(msg == '1'){
            document.getElementById("login").innerHTML="登录成功!";
        }else if(msg=='2'){
            document.getElementById("login").innerHTML="用户名或密码错误!";
        }else{
            document.getElementById("login").innerHTML=msg;
        }
      }
    }else alert('php页面报错,返回内容为:'+msg);
    
    }
    

    对比1不成功是因为返回了空白字符,如你php页面内容的空白字符,BOM头之类的,要去掉空白字符后再对比

           msg = xmlhttp.responseText.replace(/^\s+|\s+$/g,'');
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog