2012-11-29 2 views
2

사용자가 AJAX를 통해 가입 HTML 양식을 제출 한 후 PHP 파일의 정보를 기반으로 트리거하도록 만든 jQuery 알림에 문제가 있습니다. 오류에 대한 알림은 작동하지만 데이터베이스에 대한 게시에는 적합하지 않습니다. 데이터가 유효성이 검사되고 데이터베이스에 기록되고 AJAX 게시물이 성공적이기 때문에 성공 알림이 표시되어야한다는 것을 알고 있습니다. 그러나 성공 알림은 일하기를 원하지 않습니다. 이 전문성의 이유는 무엇일까요?Ajax POST 성공에 대한 Jquery 알림

는 I가 설정 한 다음 한 :

signup.html는 (페이지 * 내에서 다음 아약스 포함) :

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; 

    } 
+0

success 함수에'console.log (data);'를 추가하여 보냈던 것을 확인해보십시오. – Musa

+0

@Musa : 죄송합니다. 이 함수를 어디에 추가 할 수 있는지 설명해 주시겠습니까? –

+0

제안대로 테스트 해 보았습니다. 도움이되는 제안에 감사드립니다. 나는 그 사건 (데이터 == -4)이 어떤 이유로 돌아 오지 않는다는 것을 발견했다. 그래서 문제는 PHP 파일의 어딘가에있는 것처럼 보입니다. –

답변

1

나는 그 문제를 발견했다. 이 문제는 데이터베이스 클래스에 몇 개의 클래스 멤버 중 일부였던 printf() 함수 때문에 발생했습니다. 그들은 함수를 중단하고 registerUser()에서 부울 값을 true 및 false로 반환하고 반환했습니다.

귀하의 도움과 도움에 감사드립니다. 투표를 포기 하겠지만 명성 점수가 충분하지 않습니다. 하하.