2011-09-20 124 views
-1

我需要使用ajax函数过滤region字段im的值,如下面的代码中提到的,但它不起作用。关于功能的AJAX CALL不会进入函数'territory_filter_callback',无论如何都会知道错误在哪里?drupal 6中的ajax函数不起作用

  function form_search_menu() { 

      $items['form/search'] = array(
      'title' => t('Search'), 
      'page callback' => 'drupal_get_form', 
      'page arguments' => array('_search'), 
      'access callback' => TRUE, 
      'description' => t('search'), 
       ); 
      return $items; 
       } 

     function _search(&$form_state) { 
     drupal_add_js(drupal_get_path('module', 'form_search') .'/script.js'); 
      $form['description'] = array(
      '#type' => 'item', 
      '#title' => t('Search page'), 
       ); 



     //FILL THE LIST OF REGIONS 
     $conn = oci_connect('webuser', 'website', '172.16.1.1'); 

     //regions 
     $stid = oci_parse($conn, "SELECt code,descr1 FROM table1.region"); 
    oci_execute($stid); 
    $cidades = array();   while (($row = oci_fetch_array($stid, OCI_ASSOC))) { 
      $cidades[$row['CODE']]= $row['DESCR1']; 
           }  $cidades ['']='Select'; 

     //city 
     $stid1 = oci_parse($conn, "SELECT code,descr1 from table1.city ORDER BY  DESCR1"); oci_execute($stid1); $types = array();  while (($row = oci_fetch_array($stid1, OCI_ASSOC))) { 
      $types [$row['CODE']]= $row['DESCR1']; 
           }   $types['']='Select'; 
    //territory 
    $stid2 = oci_parse($conn, "SELECT code,descr1 FROM table1.territory");  oci_execute($stid2); 
    $territory = array(); 
     while (($row = oci_fetch_array($stid2, OCI_ASSOC))) { 
      $territory [$row['CODE']]= $row['DESCR1']; 
           } 
     $territory ['']='Select'; 


    oci_free_statement($stid); 
    oci_close($conn); 


$form['name'] = array(
    '#type' => 'fieldset', 
    //'#title' => t('Name'), 
    // Make the fieldset collapsible. 
    '#collapsible' => false, // Added 
    '#collapsed' => FALSE, // Added 
); 

    $form['name']['Region'] = array(
'#type' => 'select', 
'#title' => t('Region'), 
'#options' => $cidades, 
'#required' => FALSE, '#default_value' => isset($form_state['values']['name']['Region']) ? $form_state  ['values']['name']['Region'] : '', 
     '#ajax' => array(
      'event' => 'change', 
     'callback' => 'territory_filter_callback', 
      'wrapper' => 'dropdown_second_replace' 
    ), 
    // Added 
    ); 

$form['name']['Territory'] = array(
    '#type' => 'select', 
    '#title' => t('Territory'),  '#prefix' => '<div id="dropdown_second_replace">', '#suffix' => '</div>', 
    '#options' => $territory, 
    '#required' => FALSE, '#default_value' => isset($form_state['values']['name']['Territory']) ?    $form_state['values']['name']['Territory'] : '', 

     // Added ); 

    $form['name']['City'] = array(
    '#type' => 'select', 
     '#title' => t('City'), 
     '#options' => $types, 
    '#required' => FALSE, 
    // Added 
); 

$form['link'] = array(
'#type' => 'markup', 
'#value' => '<a href="#" onclick="navigate()" ><input type="button" value="Search"   style="background-color:#2A64A9;color:#FFFFFF;width:80px; height:25px;   border:1;CURSOR:POINTER;float:right;border-color:#FFFFFF;" ></a>', // 



    return $form; 
} 

    function territory_filter_callback(&$form,&$form_state) 
{ 
$territory_options=array(); 
    if(isset($form['name']['Region']['#default_value']['0']) 
{ $Region=$form['name']['Region']['#default_value']['0']; 
} 
else 
    {  $Region=0; 
    } 


    $territory_options=selected_territory($Region); 
    $form['name']['Region']['#ajax']= 
    array('event' => 'change', 
    'wrapper' => 'territory_wrapper', 
    'callback' => 'filter_territory_callback', 
    'method' =>replace, 
    ); 
    $form ['name']['territory']['prefix']='<div id="territory_wrapper">'; 
     $form ['name']['territory']['prefix']='</div>'; 
     $form ['territory']['#options']=$territory_options; 

    } 

    function filter_territory_callback($form,$form_state) 
{ 
    $Region=$form['name']['Region']['#value']; 
$form['name']['territory']['#options']=selected_territory($Region); 
return $form['territory']; 
    } 
+0

我真的不能看到任何问号。如果你重写你的“问题”,并且添加一些关于你已经完成并且无法工作的细节,我很乐意删除我的downvote。此外,如果你可以格式化你的代码,以便阅读起来更容易,那将是非常好的。考虑通过您的代码使用相同的缩进。 – sbrattla

回答

0

的Drupal 6不支持 '#ajax' ...'#阿贾克斯正在使用Drupal 7 ...在Drupal 6,你可以用 '#ahah'

http://drupal.org/node/331941

好运气