Ru:РуководÑтва:Обработка Форм xajax-ом
Ru:РуководÑтва:Обработка Форм xajax-ом
[edit] xajax.getFormValues()
xajax делает формы асинхронной обработки данных чрезвычайно легкими.
Метод xajax.getFormValues () может использоваться чтобы автоматически извлечь данные из формы и передать их как параметр к функции PHP которую Вы регистрировали с xajax.
xajax.getFormValues() берет один обязательный аргумент который может быть или id формы которую Вы хотите обработать или фактический объект формы (см. Примечание ниже). Вы используете xajax.getFormValues как параметр для вашей функции xajax как здесь:
xajax_processFormData(xajax.getFormValues('formId'));
где xajax_processFormData () - ваша функция которая берет данные формы как параметр.
xajax генерирует строку запроса представляющую данные формы которые разбираются xajax сервером и передаются к вашей функции PHP как масив представляющий данные формы подобно тому как если бы Вы передали форму и использовали стандартный массив PHP $_GET.
"NOTE": Определение Вашей функции PHP должно иметь параметр для массива иначе переменные формы не будут передаваться функции PHP.
"NOTE ": Не пробуйте получить доступ к $_GET... Ваша обработка функции PHP должна быть похожа на MyFunc ($dta). Когда вызвана команда массив переменных формы будет передаватся в $dta и Вы сможете обращаться с ним как с любым другим ассоциативным массивом. Я пробовал $_GET, бесполезно. (Заметье: Вы "могли" получить данные прямо из $_POST ['xajaxargs'] [0] где они закодированы как XML xjxquery тег - но почему не позволить xajax сделать вашу жизнь легче? Кроме того текой метод передачи может измениться в будущих версиях.)
xajax will handle to generate multidimensional and associative arrays. Например если Вы имеете форму с тремя checkboxes’ами и Вы даете им все название "checkbox []", но различные значения типа "check1", "check2", и "check3" и Вы используете функцию xajax.getFormValues как параметр к вашей функции xajax функция PHP получит множество которое похоже на это:
array ( 'checkbox' => array ( 0 => 'check1', 1 => 'check2', 2 => 'check3', ), )
Аргумент массва вашей функции отражает структуру массива $_GET при стандартном использовании. Вы можете получить доступ к данным checkbox в массиве как здесь:
$aFormData['checkbox'][0]
"NOTE": Убедитесь что Вы назначаете атрибут '"id'" в дополнение к атрибуту name. Если Вы не в назначили id в форме Internet Explorer значение тега name для id и функция getFormValues будет работать. С другой стороны Firefox не сможет найти форму если Вы явно не установите атрибут id.
"NOTE": Используя Firefox, убедитесь, что вы назначили атрибут name на все типы ввода, которые хотите использовать функцией getFormValues. Только признак id не будет работать.
[edit] Передача только части формы
Если Вы хотите чтобы, только чтобы часть элементов формы была передана (a subset of the form) то есть новая опция, начиная с версии 0.2.1. Есть дополнительный параметр к xajax.getFormValues, определяя приставку - если установлена, то передаваться PHP функции будут только те элементы, которые содержат приставку. Это может быть очень удобным, когда Вы имеете большую форму и только хотите обновить подраздел. The prefix parameter is the third parameter of the function, the first being the form's id and the second being a Boolean indicating whether to submit disabled fields.
Таким образом, полный синтаксис становится:
xajax_processFormData(xajax.getFormValues(formID[,bSubmitDisabled[, prefix]));