2

ユーザーがAJAXを介してサインアップHTMLフォームを送信した後、PHPファイルからエコーされた情報に基づいてトリガーするために作成したjQuery通知の一部に問題があります。エラーの通知は機能しますが、データベースへの投稿が成功した場合は機能しません。データが検証されてデータベースに書き込まれ、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) {

    }
});
}

new_user.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 に答える