PDA

View Full Version : متد ajax در jquery



roya_django
جمعه 12 خرداد 1396, 15:45 عصر
سلام و درود


من سوالاتی در مورد متد ajax دارم.

اینطور که پیداست از این متد میتوان هم برای گرفتن داده از api استفاده کرد و هم برای ارسال داده به سمت سرور و گرفتن پاسخ.

اما من هرچه به کدهایی که در موارد فوق به کار رفته نگاه میکنم سردر نمیارم که چه تفاوتی بین این هاست منظورم اینه که کدهایی دقیقا مشابه رو مینویسن
ولی در عمل یکیشون داده سمت سرور ارسال میکنه یکیشون داده از سرور می گیره . میخواستم اگه ممکنه بنده رو راهنمایی کنین که چه تفاوتی بین اینها هست

مثلا این کد رو ببینین:


$("button").click(function(){
$.ajax({url: "a url link", success: function(result){
//some code
}});
});


در کد فوق یک لینک داده شده حالا قراره داده ای سمت سرور ارسال بشه و متدی که مناسب این لینک هست اجرا بشه؟ یا اینکه قراره به یه api بره و مقداری داده
به فرمت جی سون رو دانلود کنه؟

من متاسفم که این سوال ساده رو می پرسم اما طی چند روز اخیر در درک بسیاری از کدها ناتوان بوده ام و گویا ریشه تمام بدفهمی های من ندونستن سازوکار متد ajax
هست

متشکرم

plague
شنبه 13 خرداد 1396, 11:57 صبح
شیوه ارتباط بین کلاینت و سرور شیوه درخاست و پاسخ هستش
یعنی شما یه درخواست میفرستی سرور بهتون پاسخ برمیگردونه

این درخواست میتونه فیزیکی باشه مثلا شما توی مرورگرت آدرسرو بزنی و اینتر کنی مرورگر درخواست رو میفرسته به سرور و پاسخ برگشتی از سرور رو به شکل صفحه وب به شما نشون میده (اینجا مرورگر عمل ارسال درخواست و هندل کردن پاسخ رو انجام میده )
یا میتونه نرم افزاری باشه یعنی اینکه شما یک کد بنویسی که وصل بشه به سرور و پاسخ رو بگیره (در این حالت دیگه شما خودت باید پاسخ برگشتی رو بات کد نوشتن هندل کنی )



اما من هرچه به کدهایی که در موارد فوق به کار رفته نگاه میکنم سردر نمیارم که چه تفاوتی بین این هاست منظورم اینه که کدهایی دقیقا مشابه رو مینویسن
ولی در عمل یکیشون داده سمت سرور ارسال میکنه یکیشون داده از سرور می گیره . میخواستم اگه ممکنه بنده رو راهنمایی کنین که چه تفاوتی بین اینها هست

کد تقریبا یکسانی دارن چون عمل یکسانی هستن شما در هر دو حالت باید درخواست بفرستی به سرور
درخواستی که شما میفرستی میتونه پارامتر به همراه خودش داشته باشه و ارسال کنه به سرور یا میتونه نداشته باشه
مثلا اگه من این آدرس رو بزنم site.com درخواست ارسال کردم به سرور بدون پارامتر یا متغیر ارسالی ولی اگه بزنم site.com?a=1 الان دارم یه چیزی ارسال میکنم به همراه درخواستم
همونجوری که میبینی کد یکی هست فقط درحالت ارسال یک چیزی بهش اضافه میشه چون درخواست همون درخواسته
البته کدی که شما گزاشتی صحیح نیست برای ارسال و این چیزی رو ارسال نمیکنه به سرور
روش های نسبت زیادی برای ارسال درخواست ایجکس داریم تو جی کوئری ajax , load , get , post که هر کدوم مزیت خودش رو داره من از post بیشتر استفاده میکنم چون کد نویسی کمتر و تمیز تری داره

اینجوری یه درخواست بدون پارامتر ارسال میکنیم
$.post('site.com' , function(result){
// handel response (result)
})


اینجوری یه درخواست با پارامتر ارسال میکنیم

$.post('site.com' , {a:1} , function(result){
// handel response (result)
})



با روش $.ajax اگه بخای ارسل کنی ارسالپارامتر اینجوری میشه

$.ajax({url: "a url link", data:{a:1} , success: function(result){
//some code
}});