2013-10-24 26 views
0

我有我的自定義模塊expertsqa.module下面的代碼Drupal 7的自定義模塊 - 通過Ajax發送表單內容,然後得到JSON響應

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插件,提交表單的內容,其工作正常,然後希望它由功能expertsqa_answer_form_submit處理,它應該返回一個JSON響應。請有人告訴我這樣做的正確方法,因爲它正在返回完整HTML

回答

2

您不需要包含任何JavaScript來完成此操作。這是Drupal強大的一部分。

這裏有很多需要解釋的地方,並且之前已經完成了。我建議你閱讀本:

https://drupal.org/node/752056

如果你看的文檔,我敢肯定,你將能夠實現你設置什麼了,在這裏做。

長話短說,在一個表單中,你有一些觸發ajax調用的元素,然後是調用它時重新加載的元素。在這個過程中,整個form_state可以被重新處理。一旦你掌握了它,你會看到它非常強大。

如果您將代碼更新爲適當的Drupal規範,並且仍然無法在此處獲得工作答覆,我將更新我的答案以幫助您。

祝你好運!

相關問題