代码之家  ›  专栏  ›  技术社区  ›  Jeremy French

以编程方式使用Drupal7AJAXgood

  •  9
  • Jeremy French  · 技术社区  · 15 年前

    X发帖人 http://drupal.org/node/953016

    我不知道如何用一种理智的方式来调用javascript。我可能希望有一个没有表单的动态页面,作为调用Drupal ajax的一部分,特别是这样ajax命令可以在返回时运行。

    到目前为止,我发现最有效的方法是:

      dummy_link = $('<a href="'+uri+'" class="use-ajax">Loading Vars</a>');
      $(vars_div).append(dummy_link);
      Drupal.attachBehaviors(vars_div);
      dummy_link.click();
    

    这是有效的,但却是一个巨大的黑客。我还没有找到执行ajax调用并让drupalajax框架执行它的方法,而不是标准jquery框架。

    我本以为直接调用DrupalAjaxAPI是可能的,有人知道如何调用吗?

    1 回复  |  直到 15 年前
        1
  •  7
  •   Josh Koenig    14 年前

    简短的回答是,你会想让自己达到如下目标:

    $.ajax(ajax.options);
    

    以编程方式创建新的Drupal.ajax函数仍然需要一个合成元素:

    base = 'someid'
    element = $('<a href="'+uri+'" class="use-ajax">Loading Vars</a>');
    element_settings = {'url': uri, 'event': 'click'}
    myAjax = new Drupal.ajax(base, element, element_settings)
    

    但至少可以在不模拟用户界面中单击的情况下触发它:

    myAjax.eventResponse(element, 'click')
    

    感觉应该有更好的方法来实现这一点,但它需要另一种方法来建立不需要DOM元素的初始ajax原型。因为很多交互集都依赖于如何将数据移回DOM,所以我认为这个用例还没有得到很好的支持。

    也可以直接使用jQuery和一组合适的选项来获得您想要的效果,但是Drupal.ajax原型函数本身引用了很多,因此在没有Drupal.ajax类的情况下这样做似乎很危险。