JP:入門:Forms処理






JP:入門:Forms処理

インデックス

JP:入門:10分間で覚えるxajax入門篇に戻る

[edit] xajax.getFormValues()

xajaxでは、非同期formデータ通信処理がとても簡単です。xajax.getFormValues()メソッドが自動的にあるformからデータを抽出して、xajaxオブジェクトに登録したPHP関数に渡されます。

xajax.getFormValues()が少なくともひとつの引数が要求されます。この引数はformのID名もしくはformオブジェクトです。(下記のNoteを参考してください)。たとえば下記のようにxajax.getFormValuesをxajax関数の引数として使用することができます:

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


一般的なformデータとPHPの$_GET配列の扱い方法に似てるが、xajaxがxajaxサーバ経由でformデータからクエリ文字列を作成し、PHP関数に配列として渡されます。

NOTE: あなたのPHP関数には必ずこの配列を関数引数そして定義する必要があります。そうでなければformデータが正しくPHP関数に渡されません。

NOTE: $_GETが使えません... あなたのPHP関数がMyFunc($dta)のようにしないといけません。formデータ配列がこの$dta変数に渡されるのであとは通常な配列扱いのみです。$_GETが無用です。

xajaxは、複数な入力を取り扱うため多次元の連想的な配列を使います。たとえば、formに要素名"checkbox[]"の3つのチェックボックスがあって、それぞれのバリューが"check1", "check2", "check3"とします。xajax.getFormValuesをxajax関数の引数として使用することで下記のような配列を取得することができます:

array (
  'checkbox' => 
  array (
    => 'check1',
    => 'check2',
    => 'check3',
  ),
)

これで要素名の'checkbox'入力データを下記のように扱うことができます: $aFormData['checkbox'][0]


NOTE: form id が必ず指定しなければなりません。idがない場合、Internet Explorerがnameタグを利用することが可能なので動作できますが、Firefoxが正しくformを見つけることができません。

NOTE: Firefoxの場合、すべての入力要素にname属性を指定すべきであります。id属性のみの場合は正しく動作しない可能性があります。

[edit] formの一部データのみを扱う場合

バージョン0.2.1からformの一部データのみを扱うために新しいオプションが導入されました。xajax.getFormValuesの引数にオプションのパラメータがあります。接頭辞を指定して、その接頭辞から始めているform要素だけはPHP関数に渡されます。大きなformに一部データしか処理しない場合はこの方法がとても便利です。接頭辞パラメータは、関数の第3のパラメータです。formIDが第一パラメータで、そして第2パラメータがdisableされた項目データを処理するかどうかのboolean型値となります。

xajax.getFormValuesの構文が下記となります:

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