各位大侠,我是一名初学者,用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();
}
?>
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,'');`
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。