首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Drupal6中使用jQuery提交表单

问在Drupal6中使用jQuery提交表单
EN

Stack Overflow用户
提问于 2012-08-07 23:16:18
回答 1查看 648关注 0票数 0

我使用的是Drupal6,我有一个非常简单的表单,它只包含我在自定义模块中创建的三个字段。我还将表单作为一个块放在了左侧导航中。这是一个搜索表单。它有两个选择框和一个自由格式的文本字段。我们的目标是能够从字段中获取值并使用jQuery进行AJAX调用,执行搜索并将结果返回给前端,然后让jQuery遍历并显示结果。不过,我真的很难理解Drupal的工作流程,尤其是表单是在一个块中。那么,在我的hook_form_submit中如何正确处理jQuery调用呢?理想情况下,我希望他们在哪个页面上,如果他们在左边栏填写表单并提交,他们就会被移植到一个处理jQuery的“结果”页面,但我就是想不出如何/何时/在哪里添加JavaScript/jQuery的正确流程来正确处理这个问题。如果我在hook_form_submit中尝试处理表单,如何将结果显示到主内容区域中的结果页面?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2012-08-08 05:06:08

我觉得你在这里有相互矛盾的需求。您希望使用ajax加载表单的结果,但也希望将用户重定向到结果页面。

如果您要将用户重定向到另一个页面,只需在视图中创建搜索表单,然后在表单提交中执行一个drupal_goto(' search - page ')。因为您不需要加载页面,所以ajax是不必要的。

如果您想在不加载页面的情况下加载结果,这就是ajax派上用场的地方。然后,我将使用ajax处理程序完全跳过drupal。不要添加一个按钮类型,只提交一个没有处理程序的按钮。然后,在ajax文件中,将行为附加到按钮按下。

ajax应该为这个ajax回调调用一些唯一url,比如'ajax/search-form‘。在您的hook_menu中注册此url,如下所示

代码语言:javascript
复制
$items['ajax/search-form/%/%/%'] = array(
  'title' => 'my title'
  'page callback' => 'my_module_ajax_search'
  'page arguments' => array(2,3,4),
);
return $items;

然后在你的函数中:

代码语言:javascript
复制
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看起来像这样:

代码语言:javascript
复制
$('.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);
    }
  });
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11849006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档