0

我的自定义模块expertsqa.module中有以下代码

function expertsqa_menu() {
$items = array();

$items['expertsqa/answerquestion'] = array( 
  'title' => 'Answer question', //page title
  'description' => 'A form to mess around with.',
  'page callback' => 'drupal_get_form', 
  'page arguments' => array('expertsqa_answer_form'), //put the name of the form here
  'access callback' => TRUE
);

  return $items;
}

function expertsqa_answer_form($form, &$form_state) {

drupal_add_js(drupal_get_path('module', 'expertsqa') . '/js/jquery.form.js');

$suffix = '
 <script>
 jQuery(document).ready(function() {
    jQuery(\'#expertsqa-answer-form\').ajaxForm({
        target: "#output"
    });
 });
</script>
';

$form['price'] = array(
    '#type' => 'textarea', 
    '#title' => 'Type Answer',
    '#rows' => 5,
    '#columns' => 10,
    '#required' => TRUE, 
'#suffix' => $suffix,
);

$form['submit_button'] = array(
    '#type' => 'submit',
    '#value' => t('Click Here!'),
);

return $form;
}

function expertsqa_answer_form_submit($form, &$form_state) {
    drupal_json_output(array('foo', 'baa'));
    drupal_exit();
}

我想通过 ajaxform JQuery 插件提交表单的内容,该插件工作正常,然后希望它由应该返回 JSON 响应的函数expertsqa_answer_form_submit 处理。请有人告诉我正确的方法,因为它返回完整的 html

4

1 回答 1

2

您无需包含任何 JavaScript 即可完成此操作。这是 Drupal 强大功能的一部分。

这里要解释的很多,之前已经做过了。我建议您阅读以下内容:

https://drupal.org/node/752056

如果您阅读了该文档,我确信您将能够完成您在此处要做的事情。

长话短说,在一个表单中,您有触发 ajax 调用的元素,然后在调用它时重新加载元素。在此过程中,可以重新处理整个 form_state。一旦你掌握了它的窍门,你会发现它非常强大。

如果您将代码更新为正确的 Drupal 约定,但仍然无法在此处回复,我将更新我的答案以帮助您。

祝你好运!

于 2013-10-24T21:57:19.397 回答