Drupal:在';拆下';使用AJAX按下按钮?

Drupal:在';拆下';使用AJAX按下按钮?,ajax,drupal-6,drupal-webform,Ajax,Drupal 6,Drupal Webform,我正在使用Drupal6并安装了AJAX模块。我有以下代码: function remove_manufacturer_role_form($form_state) { $form['#ajax'] = array( 'enabled' => TRUE ); $form['hidden'] = array('#type' => 'value', '#value' => 'is_it_here'); $form['submit'] = array('#ty

我正在使用Drupal6并安装了AJAX模块。我有以下代码:

function remove_manufacturer_role_form($form_state) {
  $form['#ajax'] = array(
    'enabled' => TRUE
  );
  $form['hidden'] = array('#type' => 'value', '#value' => 'is_it_here');
  $form['submit'] = array('#type' => 'submit', '#value' => t('Remove yourself as manufacturer'));
  return $form;
}

function remove_manufacturer_role_form_submit($form, &$form_state) {
     $current_vars = ogrolerequestmanufacturerblock_get_current_vars();

     if( $current_vars )
     {
    $curr_gid = $current_vars['current_gid'];
    $curr_uid = $current_vars['current_user_id'];
    $delete_query = "DELETE FROM {og_users_roles} WHERE rid in (SELECT rid FROM {role} WHERE name='Manufacturer') AND uid=$curr_uid AND gid=$curr_gid";
    if( db_query($delete_query) )
        drupal_set_message("You successfully removed yourself as a manufacturer from this project");
     }
}
基本上,我有一个表单来删除项目中作为制造商的用户。用户可以删除自己。此表单允许用户单击一个按钮,该按钮反过来使用AJAX提交表单,从数据库中删除用户作为制造商的角色,并通知用户是否成功。它使用AJAX成功地进行了调用并删除了角色,但是表单上仍然显示了remove按钮。如果用户再次单击该按钮,则会显示错误b/c,没有要删除的内容。这没关系,我想,b/c这不是一个致命的错误,也不会影响任何事情。。。然而,这对用户来说并不漂亮

是否有一种方法可以刷新模块的块或修改提交后显示的表单

编辑:

这似乎是一个很好的解决方案,但我似乎无法让它发挥作用。我已将delete.js javascript包含在我的模块中:

/**
 * Ajax Forms plugin for ogrolerequestmanufacturerblock 
 *
 * @param {String} hook
 * @param {Object} args
 * @return {Bool}
 */

Drupal.Ajax.plugins.ogrolerequestmanufacturerblock = function(hook, args) {
alert('it got into javascript!');
    if (hook === 'submit') {
        alert('submit called within javascript!');
    }
    return true;
}

它似乎从未进入这个javascript函数。drupal如何知道调用这个特定函数?

您可以通过AJAX检查返回值,如果删除成功,您可以在删除按钮上显示:none


查看AJAX模块文档,我认为您需要实现
Drupal.AJAX.plugins.FOO(hook,args)
。当
hook==complete
时,您可以将按钮设置为
display:none

我进入了javascript,不确定我更改了什么,但它最终开始工作。现在我所要做的就是使用javascript和“display:none”获取按钮,然后我就应该完成了。非常感谢你的回答,没有人愿意回答。额外的巧克力点数!