2009-10-14 20 views
15

Używam sprawdzania poprawności jquery i muszę sprawdzić poprawność wiadomości e-mail.Sprawdzanie poprawności jquery za pomocą wywołania ajax

użyć

$("#myForm").validate({ 
     rules: 
      email: { 
       required: true, 
       email: true 
      } 
}) 

razie dobrze. Problem polega na tym, że muszę wykonać wywołanie ajaxowe, aby sprawdzić, czy podany adres e-mail już istnieje. Jeśli istnieje komunikat o treści "Ten e-mail już się kończy. Proszę wybrać inny".

Czy ktoś może mi pomóc w realizacji tego.

Odpowiedz

16
remote: "/some/remote/path" 

Ta ścieżka zostanie przekazana wartość pola w $ _GET. tak .. co rzeczywiście jest wywoływana w przypadku byłoby:

/some/remote/path?email=someemailuriencoded 

mieć kod po stronie serwera zwrot tylko tekst prawdziwe lub fałszywe.

Następnie odpowiedni komunikat o nazwie również zdalny.

remote: "The corresponding email already exists" 

Mój kod czegoś podobnego:

$("#password_reset").validate({ 
    rules: { 
    email: { required: true, email: true, minlength: 6, remote: "/ajax/password/check_email" } 
    }, 
    messages: { 
    email: { required: "Please enter a valid email address", minlength: "Please enter a valid email address", email: "Please enter a valid email address", remote: "This email is not registered" } 
    }, 
    onkeyup: false, 
    onblur: true 
}); 

odpowiedniego serwera kodu strona w php:

$email_exists = $db->prows('SELECT user_id FROM users WHERE email = ? LIMIT 1', 's' , $_GET['email']); 
if ($email_exists) { echo 'true'; } else { echo 'false'; } 
exit; 

Oczywiście, że się używając mojego abstrakcji bazy danych rzeczy, ale je dostać.

+0

Dziękuję Daren . Testuję to, myślę, że to jest –

+0

jak mogę dodać wiadomość tylko dla zdalnego ... lub jak mogę zrobić coś "onsuccess – jack

+0

Właśnie uratowałeś mi wiele godzin. Dzięki – Sino

0

Jaki jest twój język serwera? PHP lub ASP?

Jest to część jQuery:

$.ajax({ 
    type: "POST", 
    url: "YourWebserviceOrWhatEver", 
    data: "{'Email':'[email protected]'}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
     if(msg.EmailExists){ 
     //Email exists 
     alert("This email already exists. Please select other"); 
     } 
     else { 
     //Email doesn't exist yet 
     doSomething(); 
     } 
    } 
}); 
+0

używa on sprawdzania poprawności, który ma wbudowany ajax. –

+0

Pomyśl, że autor miał na myśli użycie wtyczki sprawdzania poprawności jQuery: http://docs.jquery.com/Plugins/Validation. Nie tylko wywołanie ajax. – Kamarey

+0

Ach, ok, nie wiedziałem tego – k0ni

7

Cóż, to działa na mnie ...

$('[id$=txtEmail]').rules("add", { required: true, email: true, 
     remote:function(){ 
       var checkit={ 
        type: "POST", 
        url: WebServicePathComplete+"VerifyEmail", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        data: "{'email':'" +$('[id$=txtEmail]').val() + "'}" 
       }; 
       return checkit; 
     } 
    }); 

do wiadomości, że mam wejście z id 'txtMail'

Powiązane problemy