Ajax&;PHP登录表单,存在验证问题。多重麻烦

Ajax&;PHP登录表单,存在验证问题。多重麻烦,php,jquery,html,ajax,forms,Php,Jquery,Html,Ajax,Forms,我正在尝试使用ajax和jquery将我的登录表单转换为下拉列表。到目前为止,除了ajax和错误验证之外,我已经完成了所有工作 目前我遇到的主要问题是没有输入字段,例如密码。登录框显示“此字段是必需的”,这很好,如果我再次单击提交,输入字段将消失,消息将保留。除非刷新页面,否则无法继续登录 另一个主要问题是从php获取错误消息。如果我输入了错误的密码,则不会显示消息。表格提交后就消失了,就这样。当我再次选择login时,我可以看到以前应该显示的错误消息 好的一面是:正确的登录组合可以完美地工作

我正在尝试使用ajax和jquery将我的登录表单转换为下拉列表。到目前为止,除了ajax和错误验证之外,我已经完成了所有工作

目前我遇到的主要问题是没有输入字段,例如密码。登录框显示“此字段是必需的”,这很好,如果我再次单击提交,输入字段将消失,消息将保留。除非刷新页面,否则无法继续登录

另一个主要问题是从php获取错误消息。如果我输入了错误的密码,则不会显示消息。表格提交后就消失了,就这样。当我再次选择login时,我可以看到以前应该显示的错误消息

好的一面是:正确的登录组合可以完美地工作

感谢您的帮助

PHP和函数都粘贴在下面

function validLogin(){

$('.error').hide();
var username = $('#username').val();
if(username == ""){
    $('label#usernameError').show();
    $('input#username').focus();
    return false;
}

$('.error').hide();
var password = $('#password').val();
if(password == ""){
    $('label#passwordError').show();
    $('input#password').focus();
    return false;
}

var params = "username="+username+"&password="+password;
var url = "loginProcessAjax.php";

$("#status").show();
$("#status").fadeIn(400).html('<img src="image/loading.gif" />');


$.ajax({
    type: 'POST',
    url: url,
    dataType: 'html',
    data: params,
    beforeSend: function() {
        document.getElementById("status").innerHTML= 'checking...'  ;
    },
    complete: function() {

    },
    success: function(html) {
        $("#status").hide();
        document.getElementById("status").innerHTML= html;
        if(html=="success"){

            window.location = "index.php"

        }

    }
});
}


<?php
//check fields are filled in
if(empty($_POST) === false){

$username = trim($_POST['username']);
$password = trim($_POST['password']);

//validate fields
if(empty($username) === true || empty($password) === true){
    $errors[] = 'Your username and password are needed.';
}else if($users->userExists($username) === false){
    $errors[] = 'That username does not exist';
}else if($users->emailActivated($username) === false){
    $errors[] = 'You need to activate the account, please check your email.';
}else{

    //start login
    $login = $users->login($username, $password);
    if($login === false){
        $errors[] = 'That username or password is invalid';

        if(empty($errors) === false){
            echo '<p>' .implode('</p<p>', $errors).'</p>';
        }

    }else{
        //destroy old session and create new - prevents session fixation attacks
        session_regenerate_id(true);
        //all details are correct - the method returns the id to be sotred as a session
        $_SESSION['id'] = $login;
        //send user to their home page
        echo "success";
        header('Location: userHome.php');
        exit();
    }
}
}
函数validLogin(){
$('.error').hide();
var username=$('#username').val();
如果(用户名==“”){
$('label#usernamererror').show();
$('input#username').focus();
返回false;
}
$('.error').hide();
var password=$('#password').val();
如果(密码==“”){
$('label#passwordError').show();
$('input#password').focus();
返回false;
}
var params=“username=“+username+”&password=“+password;
var url=“loginProcessAjax.php”;
$(“#状态”).show();
$(“#status”).fadeIn(400).html(“”);
$.ajax({
键入:“POST”,
url:url,
数据类型:“html”,
数据:params,
beforeSend:function(){
document.getElementById(“status”).innerHTML='checking…';
},
完成:函数(){
},
成功:函数(html){
$(“#状态”).hide();
document.getElementById(“status”).innerHTML=html;
如果(html==“成功”){
window.location=“index.php”
}
}
});
}

什么是
内爆(“它显示错误,它们包含在一个数组中。如果数组不是空的,则“清空”、“显示”或“内爆”数组,使错误可见。但是为什么要用
sh!t连接元素,这不应该是那样的。应该是。修改、保存、更新,上面的错误仍然存在。感谢您指出我你能把表单和它的容器的html贴出来吗