Drupal 7 开发内部培训资料, 分头诗人

form表单中绑定了ajax的部分是怎么告知misc/ajax.js的?

赞成!
0
否决!

Drupal.behaviors.AJAX = {
  attach: function (context, settings) {
    // Load all Ajax behaviors specified in the settings.
    for (var base in settings.ajax) {
      if (!$('#' + base + '.ajax-processed').length) {
        var element_settings = settings.ajax[base];

        if (typeof element_settings.selector == 'undefined') {
          element_settings.selector = '#' + base;
        }
        $(element_settings.selector).each(function () {
          element_settings.element = this;
          Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings);
        });

        $('#' + base).addClass('ajax-processed');
      }
    }

for (var base in settings.ajax) {
$('#' + base + '.ajax-processed')
......
}

/misc目录下边的ajax.js文件中的这部分,应该是绑定了ajax 的表单元素告知ajax.js它已绑定ajax 的关键。就是settings.ajax中有绑定 ajax的表单元素的对应的选择器。settings应该是最早由drupal中ajax提交路径 system/ajax对应回调函数ajax_process_form 中的ajax_pre_render_element提供的。但是它并未指定settings还有个ajax。

请大侠赐教,表单元素到底是怎么触发ajax的

1 个回答

赞成!
0
否决!

呃,这个问题貌似,还是api没看明白,或者说没看全。自己已经解决。表单元素中,有 #process 属性,就把加写了#ajax的元素,就通过本element 的#attached属性,把相关的元素id等属性转换成Drupal.settings加载到前端。前端的ajax.js就能知道哪个元素绑定了ajax。

 (@_@;)