我正在使用 Drupal 6 并安装了 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 进行调用并删除了应有的角色,但表单上仍然显示了删除按钮。如果用户再次单击该按钮,则会给出错误 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 怎么知道调用这个特定的函数?