JQuery Validator Plugin Metodo server di chiamata Asp.Net
-
22-07-2019 - |
Domanda
Uso il plug-in di convalida JQuery per convalidare un modulo ( http://docs.jquery.com / Plugins / validazione / )
Ad esempio, posso convalidare un'email in un modulo.
Quello che vorrei fare è convalidare se il nome utente scelto esiste già. Quindi, ho bisogno di chiamare un metodo server che interroga il database. Come posso farlo?
UPDATE
Dalla risposta di balexandre, provo quanto segue:
$.validator.addMethod("userName",
function(value, element)
{
$.get
(
"CheckUser.aspx?User=" + value,
function(data)
{
if (data == "True")
{
return false;
}
else if (data == "False")
{
return true;
}
else
{
alert(data);
}
}
);
},
"User already exists");
$(document).ready
(
function()
{
$("#aspnetForm").validate
(
{
rules:
{
<%=txtUserName.UniqueID %>:
{
required: true,
email: true,
userName: true
}
}
}
);
}
);
Nella risposta, scrivo un valore booleano (True of False) anziché 1 o 0.
So che la mia funzione di validazione è call. Il problema è che mostra sempre il messaggio di errore anche se l'utente non esiste. Provo a mettere un messaggio di avviso prima del ritorno vero per vedere se è raggiungibile, e lo è. Quindi non capisco, perché non funziona ...
Soluzione
abbastanza semplice ed è una bella tecnica che applico molto sui miei progetti
1 - crea una pagina aspx chiamata confirmUserAvailability.aspx con file code-behind
2: elimina tutte le righe tranne la prima nel file aspx
3 - nel file code-behind all'interno dell'evento Page_Load chiama il tuo database come
protected void Page_Load(object sender, EventArgs e) {
string username = Request["usr"];
int r = 0;
if(!String.IsNullOrEmpty(username))
if( yourDAL.getUserAvailability(username) )
// your method would send true if user is available to be used
r = 1;
Response.Clear();
Response.Write(r);
Response.Flush();
}
4: ora nella pagina del modulo, crea un pulsante come
<input id="btnCheckAvailability" type="button"
value="Check availability"
onclick="javascript:checkAvailability();" />
5 - crea il metodo checkAvailability ()
<script type="text/language">
function checkAvailability() {
var $user = $("#UsernameInputBox");
$.get("verifyUserAvailability.aspx?usr=" + $user.val(), function(data) {
// this will call the page passing the username and return 1 or 0
if( data == "1" )
$user.css("background-color", "green");
else
$user.css("background-color", "red");
});
}
</script>
Altri suggerimenti
Questo dovrebbe fare il trucco ...
http://riderdesign.com /articles/Check-username-availability-with-JQuery-and-ASP.NET.aspx
OPPURE ...
Una risposta mostra come chiamare un servizio & amp; il secondo mostra come chiamare un metodo di pagina.