Drupal:在';拆下';使用AJAX按下按钮?
我正在使用Drupal6并安装了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
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”获取按钮,然后我就应该完成了。非常感谢你的回答,没有人愿意回答。额外的巧克力点数!