Drupal 7自定义模块 - 通过Ajax发送表单内容,然后获得JSON响应

时间:2013-10-24 09:11:16

标签: drupal-7 drupal-modules

我的自定义模块expertqa.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插件提交表单的内容,该插件工作正常,然后希望它由函数专家qa_answer_form_submit处理,该函数应返回JSON响应。请有人告诉我正确的方法,因为它返回完整的HTML

1 个答案:

答案 0 :(得分:2)

您无需包含任何JavaScript即可完成此操作。这是Drupal力量的一部分。

这里要解释很多,而且之前已经完成了。我建议你读这个:

https://drupal.org/node/752056

如果您阅读该文档,我相信您将能够完成您要在此处完成的工作。

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

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

祝你好运!