有没有办法加速Drupal形式的ajax调用

时间:2013-05-28 21:14:11

标签: ajax drupal-7 form-api

我使用表单API和ajax调用在Drupal 7中构建了一个表单。典型的表单项如下所示:

$form['wrapper']['step1']['currency'] = array(
  '#type' => 'radios',
    '#options' => array(
    'USD' => t('USD'),
    'GBP' => t('GBP'),
    'EUR' => t('EUR'),
  ),
  '#default_value' => (!empty($form_state['values']['currency'])) ? $form_state['values']['currency'] : 'USD',
  '#title' => t('Choose Currency'),
  '#required' => TRUE,
  '#ajax' => array(
    'callback' => 'ajax_step1',
    'wrapper' => 'step1-wrapper',
    'method' => 'replace',
    'effect' => 'fade',
    'speed' => 'fast',
  ),
);

一切都在运作,但即使ajax调用只是重建表单的一小部分,也需要几秒钟(笨蛋正在加班:)。

这是正常的吗?

有没有办法加速这个(保持Drupal的方式)?

1 个答案:

答案 0 :(得分:0)

当进行ajax调用时,它会逐字地重建整个表单并仅返回它的一个方面。例如,在函数 ajax_step1 中,您可能正在调用从表单中返回某个元素,并将其显示在 step1-wrapper div / wrapper元素中。

如果要加快表单返回,则需要优化表单构建器本身。这意味着,您可能需要重写表单。