帝国CMS前端错误信息修改为ajax返回的方法
帝国cms的错误信息是跳转方式,使用printerror函数,在/e/class/connect.php中。
现代网站多采用ajax返回方式,因为ajax方式更为人性化,在本页面不发生跳转,用户体验更好,单独编写ajax返回工程量过大,我们对帝国cms进行改动,实现ajax效果。
打开/e/class/connect.php文件,在328行增加如下代码:
elseif($ecms==5)//增加前台ajax返回
{
include ECMS_PATH.'e/data/'.LoadLang("pub/q_message.php");
$error=empty($novar)?$qmessage_r[$error]:$error;
$arr['msg']=$error;
$arr['status']='1';//1为失败
$arr['url']='';
echo json_encode($arr);
exit();
}
增加了单独的返回方式5,程序处理传值时传入5即可。
printerror("EmptyMember","history.go(-1)",5);
前端js可通过ajax返回的信息进行判断和输出:
// 验证手机号
function isPhoneNo(phone) {
var pattern = /^1[3456789]d{9}$/;
return pattern.test(phone);
}
function RegForm(){
if($("#username").val()==''){
layer.msg('请输入账户');
$("#username").focus();
return false;
}
if($("#password").val()==''){
layer.msg('请输入密码');
$("#password").focus();
return false;
}
if($("#repassword").val()=='' | $("#repassword").val()!=$("#password").val()){
layer.msg('请再次输入密码');
$("#repassword").focus();
return false;
}
if($("#phone").val()==''){
layer.msg('请输入手机号码');
$("#phone").focus();
return false;
}
if (isPhoneNo($("#phone").val()) == false) {
layer.msg("手机号码不正确");
return false;
}
if($("#key").val()==''){
layer.msg('请输入手机验证码');
$("#key").focus();
return false;
}
var layerindex = layer.load(2, {shade: false});
$.ajax({
url:"/api/user/docation.php",
type:"post",
dataType:"json",
data:{
ajax:1,
dotype:'register',
groupid:1,
username:$("#username").val(),
password:$("#password").val(),
repassword:$("#repassword").val(),
phone:$("#phone").val(),
key:$("#key").val()
},
success:function(result){
layer.closeAll('loading');
layer.msg(result.msg);
if(result.status==0){
window.location.href='/member/';
}
},
error:function(jqXHR){
layer.closeAll('loading');
console.log("发生错误" + jqXHR);
}
});
}