簡體   English   中英

在Drupal 6中使用jQuery提交表單

[英]Form submission with jQuery in Drupal 6

我正在使用Drupal 6,我有一個非常簡單的表單,其中只有三個字段是在自定義模塊中創建的。 我還將該表格作為塊放置在左側導航欄中。 這是一個搜索表。 它具有兩個選擇框和一個自由格式文本字段。 目的是能夠從字段中獲取值,並使用jQuery進行AJAX調用,執行搜索並將JSON返回結果的前端,並使jQuery循環並顯示結果。 不過,在遵循Drupal的工作流程時,我確實遇到了困難,尤其是因為表格很困難。 那么如何在我的hook_form_submit中正確處理jQuery調用呢? 理想情況下,我會把它想在那里任何網頁,他們都在,如果他們填寫在左側邊欄的表格,並提交,他們得到移植到一個“結果”頁面,處理jQuery的,但我就是想不通如何/何時/在何處添加JavaScript / jQuery以正確處理此問題的正確流程。 如果我在hook_form_submit中並嘗試處理表單,如何將結果獲取到主要內容區域中的結果頁面?

謝謝

我覺得您的要求有沖突。 您想使用ajax加載表單的結果,但您也想將用戶重定向到結果頁面。

如果您要將用戶重定向到另一個頁面,只需在視圖中創建搜索表單,然后在表單提交中執行drupal_goto('search-page')。 由於您無需加載頁面,所以無需使用ajax。

如果您要加載結果而不執行頁面加載,這就是ajax派上用場的地方。 然后,我將與ajax處理程序一起完全跳過drupal。 不要添加按鈕類型,只需提交沒有處理程序的按鈕即可。 然后在ajax文件中將行為附加到按鈕按下。

該ajax應該為此ajax回調調用一些唯一的URL,例如“ ajax / search-form”。 在您的hook_menu中注冊該網址,例如

$items['ajax/search-form/%/%/%'] = array(
  'title' => 'my title'
  'page callback' => 'my_module_ajax_search'
  'page arguments' => array(2,3,4),
);
return $items;

然后在您的函數中:

function my_module_ajax_search($first_param, $second, $third) {
  // Generate output and return it to the calling ajax function through print.
  $output = '<div>my output</div>'
  print $output;

  // Make sure Drupal closes out then bails so it doesn't output another
  // page wrapper.
  module_invoke_all('exit'); // Called automatically in Drupal 7 but not 6.
  exit(); 
}

您的Ajax看起來像:

$('.button').click(function(
  value1 = $('.box1').value() // dont remember the actual function to extract a text field value.
  value2 = ...
  $.ajax({
    url: Drupal.settings.basePath + 'ajax/search-form/' + value1 + '/' + value2 + '/' + value3,
    success: function(data) {
      $('.my content').html(data);
    }
  });
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM