在Drupal文件模块ajax上传内的DOM上发生了什么

时间:2016-06-22 03:03:08

标签: ajax drupal

Drupal内置了这个ajax框架。所以,我可以使用像

这样的命令编写回调函数
$commands = array();
$commands[] = ajax_command_replace(NULL, theme('status_messages'));
return array('#type' => 'ajax', '#commands' => $commands);

输出然后由Drupal ajax框架以某种方式处理,以最终完成DOM的操作。正如上面的函数_replace,它基于一些包装器ID替换DOM中的某些东西。

以上代码来自Drupal附带的file模块。上传新文件时,表单将更新以指示在表单中插入新文件。

正如文件所述,第一个论点可能是NULL,它可能是selector。我特别想知道这个file模块如何计算包装器ID,以便它可以插入DOM元素作为最终结果。

1 个答案:

答案 0 :(得分:0)

取自drupal文档页面。

如果该命令是对来自#ajax表单元素的请求的响应,则该值可以为NULL。

在file_managed_file_process函数中,你有upload_button表单元素,它将ajax请求发送到'file / ajax / ...'路径。

ajax_command_replace用于file_ajax_upload()中的ajax回调。因此请求来自upload_button表单元素,在这种情况下,您可以使用NULL而不是选择器。