View Full Version : مقدار دهی آرگومان تابع از سمت سرور
alismith
جمعه 02 اردیبهشت 1390, 16:17 عصر
سلام
من یه سوال دارم که شاید یکم پیچیده باشه اما امیدوارم که دوستان بتونند یه جواب همچین درست و حسابی به من بدن.
حالا بریم سراغ سوال :
فرض کنید ما یه فایل js داریم که در اون یه تابع تعریف کریم که ده تا آرگومان داره، حالا من می خوام نتیجه یه query رو که مثلا دو تا مقدار داره رو به عنوان آرگومان به این تابع بدم .
البته بعضی آرگمان ها هم باید از پیش تعیین شده باشه :
function Example(a,b,c,d,e,f,g,h,j,i){
// do anything
}
حالا اینجا مثلا a , b , c همیشه باید یه مقدار ثابت داشته باشند که ربطی به سرور نداره ولی بقیه آرگومان ها باید از طریق نتیجه query پر بشند :
Example(var1,var2,var3, query result...);
چطوری میشه این کار رو انجام داد؟
با تشکر
mehdi.mousavi
شنبه 03 اردیبهشت 1390, 12:33 عصر
سلام من یه سوال دارم که شاید یکم پیچیده باشه اما امیدوارم که دوستان بتونند یه جواب همچین درست و حسابی به من بدن.
سلام.
خیر، پیچیده نیست. مساله ای که مطرح کردید یک نیاز طبیعی هستش.
فرض کنید ما یه فایل js داریم که در اون یه تابع تعریف کریم که ده تا آرگومان داره، حالا من می خوام نتیجه یه query رو که مثلا دو تا مقدار داره رو به عنوان آرگومان به این تابع بدم .
هر وقت تعداد Argument های تابع، از 3، 4 تا فراتر رفت، بهتره که دیگه اون پارامترها رو بصورت مقادیر تکی به تابع ارسال نکنید. بلکه همه رو در Object مجزایی Encapsulate کنید و سپس Reference به اون Object رو به تابع بدید. در jQuery، می تونید به این شکل عمل کنید:
function myFunc(options) {
options = $.extend({
param1: 200,
param2: null,
param3: 12.54
}, options);
alert(options.param1);
}
اینجا، من جای اینکه تابعی با 3 متغیر (param1، param2 و param3) تعریف کنم، تابعی با یک متغیر (به اسم options) تعریف کرده ام. سپس در کد، مقادیر Default هر پارامتر رو set می کنم. در این مثال، param1 رو 200، param2 رو null و param3 رو 12.54 تعریف کرده ام (با استفاده از extend در jQuery). سپس، یک alert نوشتم که مقدار پارامتر 1 رو بهمون نشون بده. حالا در Ready Handler، این تابع رو به شکل های گوناگون Call می کنم:
$(function () {
myFunc({ param1: 230 }); //param1 === 230
myFunc({ param2: 230 }); //param1 === 200
});
در خط دوم از کد فوق، مقدار param1 رو به 230 set کرده ام. بنابراین، در این مرحله param1 === 230 هستش. چون مقادیر param2 و param3 رو نداده ام، اونها مقدار Default ای که در بالا به اون اشاره کرده ام رو به خودشون میگیرن. در خط سوم، param2 رو 230 گذاشته ام، پس، param1 مقدارش 200 خواهد بود. param2 دیگه null نیست و 230 خواهد بود... حالا هر طوری که مایل باشم، میتونم این تابع رو Call کنم و هر کدوم از پارامترها رو که نیاز بود به تابع پاس کنم، تو این حالت دیگه جای پارامترها نیز اهمیتی نداره:
myFunc({
param2: 230,
param3: 92.87,
param1: null,
});
موفق باشید.
alismith
شنبه 03 اردیبهشت 1390, 16:55 عصر
سلام خیلی ممنون
من با روش تعریف object آشنایی داشتم اما نمی دونم چرا اینجا به ذهن خودم نرسید، حالا کاری نداریم دست شما درد نکنه. اما یه موضوع اینجا می مونه من می خوام بدونم چطوری من یه query رو که مثلا با mysql گرفتم رو در اختیار این object قرار بدم و بعد اون تابع رو اجرا کنم؟
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.