hmahdavi921
سه شنبه 02 تیر 1394, 11:02 صبح
با سلام
دوستان حتما دیدید که در صفحات ثبت نام وب سایت ها بعد از اینکه ایمیلی وارد میشود و کنترل از المان مربوط به ایمیل خارج میشود (blur) ایمیل وارده بررسی شده و پیغامی در صفحه نمایش داده میشود .این کار از طریق Jquery ajax و وب سرویس انجام میشود.من نمونه این کار رو در dotnettip دیدم و انجامش دادم اما هر کاری که میکنم درست کار نمیکنه.دستوراتی که یک مقدار رو از دیتا بیس فراخوانی میکنه کاملادرسته وتست شده است. اما کد های jquery ajax که خیلی وارد نیستم ، یه ایرادی داره که جواب نمیده یعنی اصلا کار نمیکنه.من کد ها رو میزارم دوستان محبت کنید یک نگاه بندازید چند روزیه پروژه معلق مونده.
کد html تکست باکس :
<asp:TextBox Cssclass="form-control " ID="txt_email" runat="server" dir="rtl" placeholder="ایمیل" aria-describedby="inputGroupSuccess1Status" ></asp:TextBox>
کد C# وب سرویس که در code behind خود صفحه نوشته شده :
//آیا کاربری این ایمیل را قبلا در سیستم ثبت کرده است؟
[WebMethod]
public static bool AreExistEmail( string emailP)
{
string email = null;
if (emailP != null)
email = HttpUtility.HtmlEncode(emailP);
try
{
var sqlcom = new SqlCommand
{
CommandType = CommandType.StoredProcedure,
CommandText = "aspnet_Membership_GetUserByEmail"
};
sqlcom.Parameters.AddWithValue("@ApplicationName", "/");
sqlcom.Parameters.AddWithValue("@Email", email);
var returnParameter = sqlcom.Parameters.Add("@ReturnVal", SqlDbType.Int); //بدست آوردن مقدار برگشتی از پراسیجر
returnParameter.Direction = ParameterDirection.ReturnValue;
sqlcom.Connection = Sqlcon.OpenCon();
sqlcom.ExecuteNonQuery();
var result = returnParameter.Value; //اگر برابر 1 بود ایمیل ثبت نشده و اگر نه ثبت شده
Sqlcon.CloseCon();
return (int)result == 1; //درست است اگر ایمیل ثبت نشده باشد
}
catch
{
return false;
}
}
کد jquery ajax :
<script type="text/javascript">
$(document).ready(function () {
$('#txt_email').blur(function (event) {
$.ajax({
type: "POST",
url: "createuser.aspx/AreExistEmail", //نام صفحه و متد
data: "{'emailP': '" + $('#<%=txt_email.ClientID%>').val() + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
$("#div_email").append('<img id="imgLoading" src="../image/loading.gif" alt="لطفا کمی تامل کنید" style="width: 20px;height: 20px;" />');
var delay = function () {
AjaxSucceeded(msg);
};
setTimeout(delay, 500); //remove this
},
error: AjaxFailed
});
});
});
function AjaxSucceeded(result) {
if (result.d == true)
remove("#imgLoading");
else
if (result.d == false)
$('#div_email').append("<p class='text-danger'>متاسفانه نام کاربری مورد نظر پیشتر دریافت شدهاست</p>");
}
function AjaxFailed(result) {
alert(result.status + ' ' + result.statusText);
}
</script>
دوستان حتما دیدید که در صفحات ثبت نام وب سایت ها بعد از اینکه ایمیلی وارد میشود و کنترل از المان مربوط به ایمیل خارج میشود (blur) ایمیل وارده بررسی شده و پیغامی در صفحه نمایش داده میشود .این کار از طریق Jquery ajax و وب سرویس انجام میشود.من نمونه این کار رو در dotnettip دیدم و انجامش دادم اما هر کاری که میکنم درست کار نمیکنه.دستوراتی که یک مقدار رو از دیتا بیس فراخوانی میکنه کاملادرسته وتست شده است. اما کد های jquery ajax که خیلی وارد نیستم ، یه ایرادی داره که جواب نمیده یعنی اصلا کار نمیکنه.من کد ها رو میزارم دوستان محبت کنید یک نگاه بندازید چند روزیه پروژه معلق مونده.
کد html تکست باکس :
<asp:TextBox Cssclass="form-control " ID="txt_email" runat="server" dir="rtl" placeholder="ایمیل" aria-describedby="inputGroupSuccess1Status" ></asp:TextBox>
کد C# وب سرویس که در code behind خود صفحه نوشته شده :
//آیا کاربری این ایمیل را قبلا در سیستم ثبت کرده است؟
[WebMethod]
public static bool AreExistEmail( string emailP)
{
string email = null;
if (emailP != null)
email = HttpUtility.HtmlEncode(emailP);
try
{
var sqlcom = new SqlCommand
{
CommandType = CommandType.StoredProcedure,
CommandText = "aspnet_Membership_GetUserByEmail"
};
sqlcom.Parameters.AddWithValue("@ApplicationName", "/");
sqlcom.Parameters.AddWithValue("@Email", email);
var returnParameter = sqlcom.Parameters.Add("@ReturnVal", SqlDbType.Int); //بدست آوردن مقدار برگشتی از پراسیجر
returnParameter.Direction = ParameterDirection.ReturnValue;
sqlcom.Connection = Sqlcon.OpenCon();
sqlcom.ExecuteNonQuery();
var result = returnParameter.Value; //اگر برابر 1 بود ایمیل ثبت نشده و اگر نه ثبت شده
Sqlcon.CloseCon();
return (int)result == 1; //درست است اگر ایمیل ثبت نشده باشد
}
catch
{
return false;
}
}
کد jquery ajax :
<script type="text/javascript">
$(document).ready(function () {
$('#txt_email').blur(function (event) {
$.ajax({
type: "POST",
url: "createuser.aspx/AreExistEmail", //نام صفحه و متد
data: "{'emailP': '" + $('#<%=txt_email.ClientID%>').val() + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
$("#div_email").append('<img id="imgLoading" src="../image/loading.gif" alt="لطفا کمی تامل کنید" style="width: 20px;height: 20px;" />');
var delay = function () {
AjaxSucceeded(msg);
};
setTimeout(delay, 500); //remove this
},
error: AjaxFailed
});
});
});
function AjaxSucceeded(result) {
if (result.d == true)
remove("#imgLoading");
else
if (result.d == false)
$('#div_email').append("<p class='text-danger'>متاسفانه نام کاربری مورد نظر پیشتر دریافت شدهاست</p>");
}
function AjaxFailed(result) {
alert(result.status + ' ' + result.statusText);
}
</script>