2

在用户通过 AJAX 提交注册 HTML 表单后,我创建的一些 jQuery 通知存在问题,这些通知是基于从 PHP 文件中回显的信息触发的。错误通知有效,但不能成功发布到数据库。我知道应该显示成功通知,因为数据经过验证并写入数据库并且 AJAX 发布成功。但是,成功通知不想工作。这种技术性的原因可能是什么?

我有以下设置:

signup.html(在页面中包含以下 ajax*):

function registerUser(formKey) {
$.ajax({
    type:"POST",
    url:"engine/new_user.php",
    data: $("#"+formKey).serialize(),
    cache:false,
    success: function(data) {

        if(data == -3){
            $("html, body").animate({ scrollTop: 0 }, 600);
            $("#user-exists-notification").fadeIn(1000);
            }
        if(data == -4){
            $("#account-created").fadeIn(1000);
            }
        if(data == -1){
            $("html, body").animate({ scrollTop: 0 }, 600);
            $("#fields-complete-notification").delay(1000).fadeIn(1000);
            }
        if(data == -2){
            $("html, body").animate({ scrollTop: 0 }, 600);
            $("#pw-confirm-notification").delay(1000).fadeIn(1000);
            }
    },
    error: function(data) {

    }
});
}

新用户.php

 require("register-classes.php");

 $register=new Register($_POST['fname'], $_POST['lname'], $_POST['email'], $_POST['sex'], $_POST['birthdate'], $_POST['phone'], $_POST['country'], $_POST['alias'], $_POST['handle'], $_POST["password"], $_POST["cpassword"], $_POST['network']);

if($register->checkFields()== false){

     echo -1;

 } else if($register->confirmPasswords()== false){

     echo -2;
 }else if($register->registerUser()!=false){


     echo -4;
 } else if($register->registerUser()==false){
     echo -3;
 }


and register-classes.php (which contains classes for processing sign up form)

    class Register {

        public function __construct($fname, $lname, $mail, $sex,
        $birthday, $phonenumber, $regCountry, $alias, $username,
        $password, $conf_password, $network_site) {

            //Copy Constructor
            $this->site=$network_site;
            $this->firstname=$fname;
            $this->lastname=$lname;
            $this->email=$mail;
            $this->sex=$sex;
            $this->birthdate=$birthday;
            $this->phone=$phonenumber;
            $this->country=$regCountry;
            $this->displayname=$alias;
            $this->handle=$username;
            $this->salt="a2cflux9e8g7ds6ggty589498j8jko007876j89j8j7";
            $this->password=crypt($this->salt.$password);
            $this->joindate=date("Y-m-d H:i:s");
            $this->confirm_password1=$password;
            $this->confirm_password2=$conf_password;

        }

        public function registerUser(){

            $database=new Database();
            $database->getConnection();
            $database->startConnection();

            //Check database to insure user and email address is not already in the system.                     
            $checkUsers= mysql_query("SELECT network_users.network_id
            FROM network_users, network_profile
            WHERE network_users.handle = '$this->handle'
            OR network_profile.email = '$this->email'");

            $numRecords= mysql_num_rows($checkUsers);

            if($numRecords == 0){

                $addUser= mysql_query("INSERT INTO network_users(handle, password, date_created, parent_network, site_created, active, account_type, del)
                values('$this->handle', '$this->password', '$this->joindate',' fenetwork', 'network', 'active', 'standard', 'F')") or die(mysql_error());

                $networkId=mysql_insert_id();

                $addProfile= mysql_query("INSERT INTO network_profile(network_id, first_name, last_name, email, sex, birthdate, phone, country, display_name, del)
                values('$networkId', '$this->firstname', '$this->lastname', '$this->email','$this->sex', '$this->birthdate', '$this->phone', '$this->country', '$this->displayname', 'F')") or die(mysql_error());

                $this->addUser;
                $this->addProfile;

                            return true;

            }
            else{

                return false;
            }
        }

        public function checkFields(){
            if(($this->firstname)!="" && ($this->lastname)!="" && ($this->email)!="" && ($this->sex)!="" && 
                ($this->birthdate)!="" &&($this->country)!="" && ($this->handle)!="" && ($this->password)!=""){

                return true;     
            } else {

                return false;
            }

        }

        public function confirmPasswords(){

            if($this->confirm_password1==$this->confirm_password2){

                return true;
            } else {

                return false;
            }
        }

        private $site, $firstname, $lastname, $email,
        $sex, $birthdate, $phone, $country, $displayname, 
        $handle, $password, $salt, $joindate, $confirm_password1, $confirm_password2;

        protected $addUser, $addProfile;

    }
4

1 回答 1

1

我发现了这个问题。问题是由于 printf() 函数是数据库类中几个类成员的一部分。它们导致函数完成中断并在 registerUser() 中返回布尔值 true 或 false;

谢谢大家的帮助和帮助。我会放弃投票,但我没有足够的声望点。哈哈。

于 2012-11-29T12:06:07.333 回答