need help on getting $form_state['values'] of forms added via ajax after submitted.

my codes as below,however it will not return any values of 'field_name' after submitted.Thanks in advance!

 * hook_menu()

function addstudent_menu(){
    $items= array();
    $items['user/%/add-students'] = array(
        'page callback' =>'drupal_get_form',
        'page arguments' => array(addstudent_form),
        'access arguments' => array('create new users'),
        'type' => MENU_LOCAL_TASK,


    return $items;


function addstudent_form($form,&$form_state){
    $form['#cache'] = TRUE;
    $dropdown_source = taxonomy_get_tree(3);
        $options = array('0'=> '--none--');

        foreach($dropdown_source as $item){ //we get all class term here
            $key = $item->tid;
            $value =$item->name;
            $options[$key] = $value;
    }else {

    $form['addstudent_wrapper'] = array(
        '#title' => t('添加學生賬戶'),
        '#type' =>'fieldset',
', '#suffix'=> '
', ); $form['addstudent_wrapper']['fields_head']['select_class'] = array( '#title'=> t('班级'), '#type' => 'select', '#options'=>$options ); $form['addstudent_wrapper']['fields_head']['student_qty'] = array( '#title' => t('人數'), '#type'=> 'textfield', '#size'=> 10, ); $form['addstudent_wrapper']['fields_head']['add'] = array( '#type' => 'submit', '#value'=> '確認', '#ajax' => array( 'callback' => 'addstudent_get_callback', 'wrapper' =>'fields_wrapper', ), ); $form['addstudent_wrapper']['fields_wrapper']=array( '#tree' => TRUE, ); return $form; } function addstudent_get_callback($form,&$form_state){ $form_state['rebulid'] = TRUE; $i = $form_state['values']['student_qty']; return $form['addstudent_wrapper']['fields_wrapper'] = _addstudent_fields($i); } function _addstudent_fields($i){ for($a=0;$a<$i;$a++){ $form[$a]['field_number'] = array( '#title' => '學號', '#markup'=>$a+1, '#tree' =>TRUE, '#type'=>'markup' ); $form[$a]['field_name'] = array( '#title' => '姓名', '#type'=> 'textfield', '#tree' => TRUE, '#parents' => array('field_name', $i, 'field_name'), '#size'=> 10, '#default_value'=>'' ); } $form['addstudent_wrapper']['submit'] = array( '#type' => 'submit', '#value' => 'Confirm', '#submit' => array('addstudent_form_submit'), ); return $form; } function addstudent_form_submit($form,&$form_state){ $values= $form_state['values']['field_name']; $a = array_values($values); foreach($a AS $b){ foreach($b as $c){ $r[] = $c; } } dsm($values); }


Jaypan’s picture

I didn't really look through your code, but maybe this tutorial I wrote the other day can help:

The Drupal organization has shut down discussion on improvement of the forums:

It's time to start a new forum somewhere else. The Drupal organization does not care about the forums.

nevets’s picture

The form function is responsible for adding all form elements, the ajax callback is responsible for return the changed elements. The developers examples module includes several form ajax examples.