2013-12-18 34 views
0

在Drupal 7中,我需要使用多個選項進行選擇,取決於所採用的選項,在textarea中會將多個值加載到字符串中。Ajax不返回在Drupal中的值7

經過幾個小時的測試,我來到這裏尋求幫助。

我是個基本的網頁上正常運行:

function ajax_load_all_admins($form, &$form_state) { 
    $form = array(); 
    $form['changethis'] = array(
     '#type' => 'select', 
     '#options' => array(
      '' => '', 
      '1' => 'Cargar todos los admins' 
     ), 
     '#ajax' => array(
      'event' => 'change', 
      'callback' => 'ajax_load_all_admins_callback', 
      'wrapper' => 'listaCorreos-div' 
     ) 
    ); 

    $form['listaCorreos'] = array(
     '#type' => 'textarea', 
     '#prefix' => '<div id="listaCorreos-div">', 
     '#suffix' => '</div>' 
    ); 

    if (!empty($form_state['values']['changethis'])) { 
     $payments_list = db_query('QUERY WORKING WELL'); 

     $value = ''; 
     foreach ($payments_list as $payment) { 
      $value .= $payment->admin . ','; 
     } 
     trim($value, ','); 
     $form['listaCorreos']['#default_value'] = $value; 
    } 

    return $form; 
} 

function ajax_load_all_admins_callback($form, $form_state) { 
    return $form['listaCorreos']; 
} 

$form = drupal_get_form('ajax_load_all_admins'); 
print drupal_render($form); 

AJAX調用是工作,但我只recibe:

0: {command:settings, settings:{basePath:/, pathPrefix:,…}, merge:true} 

沒有其他的一個位置。

我認爲它可以爲drupal_render,但不知道爲什麼?

感謝您的建議。

回答

0

我在一個簡單的視圖中做了這個ajax函數,創建了一個特定的表單。

我將所有的邏輯移動到一個新的模塊,而不是簡單的視圖,現在正在工作。

我看看「示例模塊」的ajax示例,並測試它們是否在簡單視圖上工作,如我的代碼,不工作。

我認爲,出於任何原因,drupal阿賈克斯只適用於渲染不是手動的,就像我正在做的那樣。

謝謝。

0

因爲ajax本身有效; 在我看來,db_query工作不正常和/或返回意外結果。

我的建議:你應該能夠調試。即設置一個斷點,並通過線 走進你的代碼行我這樣做是與NetBeans & XDebug的

這應該給你一個很大的優勢解決這個&即將推出類似的問題,你就可以監視您的變量&的你的代碼的執行樹

祝你好運。

--edit--這應該完全在評論部分,但...新的在這裏,暫時不能評論..道歉。

+0

我想可能是錯誤:$ form = drupal_get_form('ajax_load_all_admins'); print drupal_render($ form); – ruudy