Farsi:Xajax 0.2: Tutorials: Processing Forms with xajax






Farsi:Xajax 0.2: Tutorials: Processing Forms with xajax

پردازش فرم ها با xajax


Xajax.getFormValues()



Xajax پردازش داده هاي فرم را بصورت نا همگام و غیر همزمان را فوق العاده آسان مي سازد . متد xajax.getFormValues() مي تواند براي اينكه به طور اتوماتيك داده را از يك فرم استخراج كند و آن را به عنوان يك پارامتر به تابع PHP كه شما با xajax رجيستر كرده ايد بفرستد . xajax.getFormValues() يك آرگومان اجباري مي گيرد كه هم مي تواند ID فرمي كه مي خواهيد پردازش كنيد باشد يا اينكه خود شيء فرم باشد .(مطالب پایین را بخوانید)


شما از xajax.getFormValues به عنوان يك پارامتر در تابع xajax تان استفاده مي كنيد ، مانند اين:

xajax_processFormData(xajax.getFormValues('formId'));

xajax_processFormData() تابعي است كه اطلاعات فرم را به عنوان پارامتر مي گيرد.

Xajax يك query رشته اي را كه داده فرم را در بر دارد، توليد مي كند كه بوسيله کد xajax که در سرور است تجزيه مي شود و مانند يك آرايه که حاوی دادهای فرم است به تابع PHP فرستاده مي شود ، دقیقا مثل حالتی که اطلاعات فرم وارد شده است و از آرايه $_GET را استفاده شده است.

نكته : در تعریف تابع PHP شما بايد يك پارامتر براي آرايه داشته باشيد، در غير اينصورت متغير هاي فرم به تابع PHP فرستاده نمي شود.

نكته : تلاش نكنيد كه به $_GET دسترسي داشته باشيد .فرا خوانی تابع PHP شما بايد شبیه چنین چیزی باشد: MyFunc($dta). موقع اجرا آرايه اي از متغير ها در $dta پاس خواهد شد و شما مي توانيد آن را مانند هر آرايه انجمنی ديگر دستكاري كنيد.من سعی کرده ام آرایه $_GET قابل دسترسی نباشد. (شما می توانید به داده از طریق این آرایه $_POST[‘xajaxargs’][0] دسترسی داشته باشید، البته داده بصورت تگ XML xajaxquery خواهد بود.ولی چرا اجازه ندهیم xajax کارها را آسانتر کند؟ بعلاوه این ممکن است در نسخه های آینده تغییر کند. ) نکته:Xajax حتي نام هاي پیچیده ورودي را براي توليد آرايه هاي چند بعدي و انجمني دستكاري خواهد كرد به عنوان مثال اگر كه شما يك فرم با سه چك باكس داشته باشيد به همه آنها یک نام یکسان مثل "checkbox[]" را بدهيد ، اما برای هر کدام از آنها مقادير مختلف مثل check1", "check2", و "check3" . تابع PHP آرايه اي را دريافت خواهد كرد كه مانند زير مي باشد:


array (
  'checkbox' => 
  array (
    0 => 'check1',
    1 => 'check2',
    2 => 'check3',
  ),
)

ساختار آرایه در تابع شماشبیه ساختار آرایه $_GET در زمانی که از فرم معمولی استفاده می شود است .شما مي توانيد به داده checkbox دسترسي داشته باشيد در آرايه اي نظير : $aFormData['checkbox'][0]

نكته : مطمئن شويد كه به فرمتان يك ID، علاوه بر نام فرم، نسبت داده ايد. اگر كه نسبت دادن ID به فرم رعایت نشوذIE از مقدار تگ اسم فرم براي id استفاده مي كند و تابع getFormValues ظاهر خواهد شد براي اينكه در هر صورت كار راه بیفتد. از طرف ديگر Firefox نمي تواند فرم را پيدا كند مگر آنكه شما به وضوح و روشنیid فرم را مقداردهي كرده باشيد .

نكته : در هنگام استفاده از Firefox مطمئن شويد كه مشخصه نام name attribute )) را به همه انواع ورودي كه مي خواهيد تابع getFormValues روی آنها اعمال شود،نسبت داده شده است.تنها مشخصه id كار نخواهد كرد.


ارائه دادن تنها قسمتي از فرم


اگر شما مي خواهيد تنها يك قسمتي از ورودیهای فرم پذيرفته شود(submitزير مجموعه اي از فرم)، برای این کار از نسخه0.2.1 به بعد xajax ، يك ابزار جدید اضافه شده است . يك پارامتر اختياري در xajax.getFormValues وجود دارد كه يك پيشوند را مشخص مي كند - - اگر كه مقدار دهي شده باشد ، تنها المنتهاي (element)فرم كه با آن پيشوند شروع مي شوند به تابع PHP ارائه مي شوند.اين مسئله مي تواند وقتي كه شما يك فرم بزرگ داريد و تنها مي خواهيد يك بخش از آن را update كنيد بسیار قابل استفاده باشد . پارامتر پيش فرض سومين پارامتر تابع است . اولي id فرم است دومي يكboolean است كه نشان مي دهد آیا فيلد ها ي غیر فعال وارد شده اند یا خیر.

بنابراین syntax کامل به این شکل در می آید:

xajax_processFormData(xajax.getFormValues(formID[,bSubmitDisabled[, prefix]));