2012-08-27 2 views
0

전자 메일을 입력 한 후에 전자 메일을 사용할 수 있는지 (db에 존재하지 않는지) 또는 존재하지 않는지 (db에 존재하는지)를 자동으로 표시합니다. 입력 할 때 표시되는 출력이 없습니다. 현재이 코드가 있습니다. 내가이PHP와 AJAX를 사용하여 서버 측 유효성 검사에 문제가 있음

가 여기 내 메인 페이지 코드의

<!DOCTYPE HTML> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>Jquery-ajax Practice</title> 
</head> 

<body> 
<section> 
    <form> 
     <label for="text_email">E-mail:</label> 
     <input id="text_email" type="email" > 

     <script type="text/javascript" charset="utf-8" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"> 
      $(document).ready(function(){ 
       $('#text_email').keyup(function(){ 
        email($(this).val()); 
       }); 
      }); 
      function email(str){ 
       $.post('checkmail.php',{ email: str}, 
       function(data){ 
        $('#check_email').html(data.returnValue); 
       }, 'json'); 
      } 
     </script> 

     <label for="text_email" id="check_email"></label> 
    </form> 
</section> 
</body> 
</html> 

여기 내 PHP 코드 내가 볼 수

<?php 
if(isset($_POST['email'])) 
{ 
    try 
    { 
     $pdo=new PDO('mysql:host=localhost;dbname=class;charset=utf-8', 'root'); 
    } 
    catch(PDOException $e) 
    { 
     echo 'Failed: '.$e->getMessage(); 
    } 

    $stmt=$pdo->prepare('SELECT email FROM class where email=:email LIMIT 1'); 
    $stmt->execute(array(':email'=>$_POST['email'])); 
    if($stmt->rowCount()>0) 
    { 
     $check='E-mail cannot be use.'; 
    } 
    else 
    { 
     $check='E-mail can be use.'; 
    } 

    echo json_encode(array('returnValue'=>$check)); 
} 
?> 
+1

코드가 빠르게 보입니다. 오류가 있습니까? 예상대로 작동하지 않습니까? – mittmemo

+3

당신은 가지고있는 문제에 관해 구체적이고, 대답할만한 질문을해야합니다. "여기 내 코드가 있는데 어떻게 향상시킬 수 있습니까?" Stack Overflow의 정의에 의한 질문이 아닙니다. – meagar

+4

[코드 검토] (http://codereview.stackexchange.com)가 더 적절할 수도 있습니다. –

답변

1

한 문제의 해결 방법, 데이터베이스 오류의 당신의 처리입니다.

당신은 try의 모든 PDO 작업을 마무리한다 - catch 블록 (단지 연결 부분)와 오류를 잡을 때, 당신은 그냥 에코뿐만 아니라 마지막에 당신의 json_encode 문에 그 포장을 필요로하지 않을 클라이언트 쪽에서 수신 된 json을 무효로 만들 것입니다.

데이터베이스 설정을 모르지만 암호를 제공하지 않고 연결 문자열에 charset=utf8이 있어야한다고 생각합니다.

+0

방금 ​​Wamp Sir을 사용하고 있습니다. 아무 것도 변경하거나 터치하지 않았습니다. –

+0

@Sui Go Wamp를 사용하지 않지만 root 사용자가 암호를 설정했다고 생각합니다. Firebug 또는 이와 유사한 것을 사용하고 Ajax 호출의 출력을 Net 탭에서 확인하십시오. 아니면 그냥 PHP 스크립트에 직접 게시하고 어떤 오류가 발생했는지 확인하십시오. – jeroen

+0

나는 이미 여러 번 사용하기 때문에 연결 문자열이 잘 작동한다고 생각합니다. 나는 문제가 내 아약스에 있다고 생각한다. 처음이다. OK 선생님. :) –

관련 문제