写了一个check.php的页面   里面有两个验证email和密码的函数function isEmail($val)
    {
            if( preg_match("/^[a-z0-9-_.]+@[\da-z][\.\w-]+\.[a-z]{2,4}$/i", $val))
            {
                return true;
            }
            else {
echo "邮箱格式不正确";
}
        }
isEmail($_POST['email']);function isNumLength($val)
    {
        if (preg_match("/^[a-zA-Z\d_]{6,16}$/",$val))
            return true;
            else {
echo "密码格式不符合要求";
}
    }
isNumLength($_POST['password1']);采用ajax异步方式验证,可是怎么只验证email,密码的验证结果“密码格式不符合要求”也出现在页面上
谢谢

解决方案 »

  1.   

    echo "密码格式不符合要求";  你的意思是想把这句话输出出来?
      

  2.   

    因为你的页面调用了两个函数 包括 isNumLength($_POST['password1']); 他当然就验证了密码了
    所以在需要的地方调用相关的函数就对了。
      

  3.   

    你可以修改成 if (!empty($_POST['password1'])){
    isNumLength($_POST['password1']);
    }那么在不需要验证密码的地方 ajax 不要post 密码过去即可
      

  4.   

    if(!$_POST['email'] || !$_POST['password1']){
        echo '表单不能为空';
    }
      

  5.   

    你在用ajax调用这个页面的时候应该传多个参数过去 表示当前的请求是验证邮箱还是验证密码
    在check页取参数来进行不同的操作
      

  6.   

    ajax调用这个页面的时候传送的参数不是需要验证谁就传谁么
      

  7.   


    常规的做法呢 你传递一个判断过去 比如 state=0 那么验证email state=1 那么验证password,两者验证 state=2
    然后在php处理的页面先判断state 是0还是1 再处理相应的工作 这样不就不会出现你刚的不知道处理哪个的问题啦?
      

  8.   

    使用了if(!$_POST['email'] || !$_POST['password1']){
      echo '表单不能为空';
    }之后再在表单里填写内容  怎么  “表单不能为空”和"邮箱格式不正确"都显示在页面上
      

  9.   


    我是采用blur的方法验证,还用使用你说的state么   
    之前没接触过ajax  也不是很明白你说的  state   能具体讲一下么
    谢谢
      

  10.   

    看样子你完全不理解啊.
    state只是传递过去的一个变量.名字是随意的.越说我看你越糊涂了...
    ajax 要验证什么传递什么没错,但不是说你不能传递其它的东西过去.只要需要你就把参数传递过去.
    state只是一个变量,方便传递过去之后服务器php判断执行哪个步骤
      

  11.   

    显示在页面上就要用到js了。比如显示值div或者span上。
    var obj=document.getElementById('test');  //假设div标签的id为test
    obj.innerHTML=data;   //data即为服务器返回的内容。