علیرضا احمدی بابلانی : وب مهراز - جامعه برنامه نویسی ایران

روش گام به گام پردازش سمت سرور بدون postback و از طریق Ajax رو میخوام بدونم

روش گام به گام پردازش سمت سرور بدون postback و از طریق Ajax رو میخوام بدونم.
 من در Asp.net میخوام این کار رو انجام بدم چطور باید از  وب متد و جاوا اسکریپت در کنار هم استفاده کنم ؟

پاســخ ها

0000000000000000000000000000002
محمد رضا ایزدی : علیرضا احمدی عزیز 
سلام 
با یک مثال در مورد چک کردن اینکه یک نام کاربری در سایت موجود است یا نه موضوع را توضیح می دهم 
در این مثال بعد از اینکه نام کاربری وارد شد بوسیله آژاکس چک می کنیم که این نام کاربری اگر موجود است یک سری پیشنهاد برای نام های کاربری جدید به کاربر داده می شود 
در این مثال از json برای انتقال داده ها استفاده شده است .
حالا اول اینکه شما باید یک متد داشته باشید که یک آدرس ثابت داشته باشد و به این صورت می توان از فایل جاوا اسکریپت آن آدرس را صدا زد 
به این نوع متد وب متد گفته می شود به طور مثال : 

        [WebMethod]
        public static string CheckUserName(string username);
        

بعد از آن می توان این وب متد را از فایل جاوا اسکریپت صدا زد 
این متد در آدرس signup.aspx قرار دارد 
به این صورت 

 $.ajax({
            type: "POST",
            url: "SignUp.aspx/CheckUserName",
            data: '{username : "' + $("#_txtUserName").val() + '" } ',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
});

در این حالت یک خاصیت داریم به نام success که به این صورت استفاده می شود 




$.ajax({
            type: "POST",
            url: "SignUp.aspx/CheckUserName",
            data: '{username : "' + $("#_txtUserName").val() + '" } ',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (result) {//اینجا 

                //alert(result.d);
                var jsonObj = $.parseJSON(result.d);
                //alert(jsonObj.isused);
                if (jsonObj.isused) {
                    var h = $('#_lblMessege');
                    h.html(h.html() + '<br/>');
                    h.html(h.html() + ' چنین نام کاربری قبلا انتخاب شده');
                    h.html(h.html() + '<br/>');
                    h.html(h.html() + ' پیشنهادات : ');
                    h.html(h.html() + '<br/>');
                    for (var i = 0; i < 5; i++) {
                        h.html(h.html() + jsonObj.sujests[i]);
                        h.html(h.html() + '<br/>');
                    }
                }
            }
        });

در اینجا result.d همان مقداری است که وب متد ما برگردانده است . 
در خط بعدی متد parseJSON(result.d) 1  استرینگی که ما از وب متد گرفته ایم را تبدیل به آبجکت json می کند 
در این قسمت کد های مربوط به زمانی که عملیات صدا زدن وب متد ما درست انجام شده اجرا می شود 
در نهایت این کد ها به شکل زیر نوشته خواهد شد 



$("#_txtUserName").focusout(function () {
        $('#_lblMessege').text(' ');
        if ($("#_txtUserName").val().length < 6) {
            $('#_lblMessege').html('<br/>' + 'نام کاربری حد اقل باید 6 کاراکتر باشد');
            return;
        }
        $.ajax({
            type: "POST",
            url: "SignUp.aspx/CheckUserName",
            data: '{username : "' + $("#_txtUserName").val() + '" } ',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (result) {

                //alert(result.d);
                var jsonObj = $.parseJSON(result.d);
                //alert(jsonObj.isused);
                if (jsonObj.isused) {
                    var h = $('#_lblMessege');
                    h.html(h.html() + '<br/>');
                    h.html(h.html() + ' چنین نام کاربری قبلا انتخاب شده');
                    h.html(h.html() + '<br/>');
                    h.html(h.html() + ' پیشنهادات : ');
                    h.html(h.html() + '<br/>');
                    for (var i = 0; i < 5; i++) {
                        h.html(h.html() + jsonObj.sujests[i]);
                        h.html(h.html() + '<br/>');
                    }
                }
            }
        });

    });


و وب متد ما اینطور است : 




 [WebMethod]
        public static string CheckUserName(string username)
        {
            var t = UserBL.IsUsedUserName(username);
            if (t)
            {
                var sujests = new string[5];
                var j = 0;
                for (var i = 0; i < 5; i++)
                {

                    var suj = username + "_15" + j;
                    while (UserBL.IsUsedUserName(suj))
                    {
                        j++;
                        suj = username + "_15" + j;
                    }
                    sujests[i] = suj;
                    j++;

                }
                return "{\"isused\" : \"true\" , \"sujests\" : [" +
                       sujests.Aggregate("", (current, sujest) => current + ("\"" + sujest + "\",")).TrimEnd(',')
                       + "]}";

            }
            return "{\"isused\" : \"false\" , \"sujest\" : [{\"\"}]}";
        }

سه شنبه 25 فروردين 1394 ساعت : 23 : 14
تعداد بازدید : 630
ارسال به دوستان

ارسال