2013-04-01 194 views
-2

我在使用jQuery的驗證插件一些奇怪的問題。這似乎被問了幾次,但我找不到我的問題的答案。我有一個形式,而我想看看是否電子郵件已經進入了 - 如果有,用戶不應該能夠提交表單。我正在使用FirePHP輸出各種變量。這是我注意到我的查詢返回值總是「1」(這是錯誤的)。但是,當我手動查詢我的數據庫(使用PhpMyAdmin),正確答案(「0」)出現。jQuery驗證和驗證插件

這裏是我的JS:

// validate signup form on keyup and submit 
$("#register").validate({ 
    rules: { 
     ...... 
     email: { 
      required: true, 
      email: true, 
      remote: "check_email.php" , async:false 
     }, 
    }, 
    messages: { 
        ...... 
     email: {required: "Please enter an email address", email: "Please enter a valid email address", remote: "This email is already registered" }, 
     } 
    } 
}); 

});

這裏是數據庫連接的東西后,我的PHP ...

$form_email = $_GET['email']; 
fb($form_email); 


$sql = "SELECT COUNT(*) AS num_rows FROM users WHERE email = " . "'" . $form_email . "'"; 
fb($sql); 
$result = $conn->query($sql); 
fb($result->num_rows); 

if ($result->num_rows == 0) { 
    echo 'true'; 
    fb("true"); 
} else { 
     echo 'false'; 
    fb("false"); 
} 

計數始終返回「1」,甚至當我輸入一個電子郵件不存在。

我還試圖返回

echo json_encode('true'); 

,因爲我讀的地方,可能會奏效,但它並沒有幫助。爲什麼我的迴應總是在我的PHP錯誤?

+0

'async'不是一個規則。檢查你的語法。 – Sparky

回答

0

remote規則的語法不正確:

rules: { 
    ...... 
    email: { 
     required: true, 
     email: true, 
     remote: "check_email.php" , async:false 
    }, 
} 

你寫它的方式,插件是看到async只是另一種規則。由於沒有像async這樣的「規則」,插件會窒息。

Following the documentation,試試這個:

rules: { 
    ...... 
    email: { 
     required: true, 
     email: true, 
     remote: "check_email.php" 
    } 
} 

或本...

rules: { 
    ...... 
    email: { 
     required: true, 
     email: true, 
     remote: { 
      url: "check_email.php", 
      async: false 
     } 
    } 
} 

DEMO:http://jsfiddle.net/KkBSY/

+0

改變了我的js爲「遠程‘check_email.php’,但仍然沒有運氣 –

+0

@KathyLyons,你可以看到,該插件在這裏工作:http://jsfiddle.net/KkBSY/但是有太多從你失蹤OP爲我提供了更多幫助。表單的呈現HTML在哪裏? – Sparky