2011-05-23 48 views
12

我們使用drupal 7 ajax框架來加載頁面上的內容。點擊鏈接時,在處理請求時鏈接後會出現一個跳動者。如何從drupal 7 Ajax鏈接中刪除throbber?

我無法找到有關如何設置或刪除throbber的文檔。在表單中它看起來非常簡單,但使用ajax鏈接和回調菜單項我找不到任何文檔。

我看到有一個$ settings變量可以傳遞給ajax_command_html函數,但我沒有看到任何文檔應該如何格式化。

+0

你能詳細說一下「throbber」是什麼嗎? ;-) – usr 2011-05-23 22:23:11

+0

http://en.wikipedia.org/wiki/Throbber – mirzu 2011-05-24 16:44:08

回答

21

,當你建立你的表單項您需要定義「進步」屬性:

$mycheckbox=array(
    '#type' => 'checkbox', 
    '#title' => 'Load it up', 
    '#ajax' => array(
     'callback' => 'ajax_example_callback', 
     'wrapper' => 'checkboxes-div', 
     'effect' => 'slide', 
     'progress' => array('type' => 'none'), 
    ), 
); 

你可以找到更多信息和示例here

+1

有很多關於如何對FAPI處理的元素進行這些更改的文檔,但幾乎沒有關於如何處理鏈接的文檔。 – mirzu 2011-05-24 16:46:09

+1

的確如此,正如mirzu提到的,如果你不使用FAPI,drupal_pre_render_link()是處理它的最好方式,實際上FAPI調用drupal_pre_render_link()來構建鏈接,所以你基本上只是跳到重要層,對於任何不熟悉的人來說,只需要將鏈接數組的格式設置爲與您打算讓其進行drupal呈現的任何其他html元素一樣,即:array('#href'=>'my_url','#title'=> 'my link title','#ajax'=> array('callback'=>'my_ajax_callback'));'等等 – Trey 2011-05-25 17:18:37

2

我找到了答案,以我自己的問題。需要了解的重要一點是,在Drupal 7中有兩種鏈接可以呈現的方式。第一種是使用舊的l()函數,另一種是使用渲染數組。 Drupal中的許多主題功能都使用舊式,並且在使用時不會穿過drupal_prerender_link()。這是什麼元素預處理,將設置從PHP傳遞到js層。

10

你可能只是隱藏通過設定顯示值的div.ajax正在進行中,活動指示器到無:

.ajax-progress-throbber { 
    display: none; 
} 

像CSS注射器(http://drupal.org/project/css_injector)模塊可能是有用的。