2012-03-02 60 views
0

我正在開發一個應用程序,該應用程序在http://www.jstree.com/documentation/json_data的每個文檔中使用帶有json數據和ajax的JS樹。爲外部ajax設置的JS樹

$("#tree).jstree({ 
    "json_data": { 
     "ajax": { ... } 
    } .... 
}); 

還有其他jquery ajax調用在文檔中的其他地方進行。現在,樹在自己的名字空間內進行ajax調用,所以與其他ajax函數沒有衝突。由於回答ajax調用的服務器問題,我需要通過公共ajax處理程序重定向樹的ajax調用,文檔的其餘部分使用該調用,然後讓該處理程序將數據返回給樹。

任何人都可以建議如何將樹的調用重定向到另一個函數,並設置回調將數據返回給樹?謝謝!

+0

你爲什麼要重定向?或者你想改變默認的jsTree ajax調用? – Radek 2012-03-03 07:26:03

+0

@Radek現在jstree調用ajax來獲取子節點。樹然後添加這些節點。它全部在jstree內處理。我希望樹調用一個外部函數,該函數將進行ajax調用,並且1)將子節點信息返回給樹,或者2)使用外部函數添加節點。我想我將不得不從「return $ .ajax(s.ajax);」更改json插件的第92行到像「返回[使用$ .ajax(父節點);]」的外部函數。 – 2012-03-04 14:32:43

+0

爲什麼你想要外部函數來添加節點? – Radek 2012-03-05 02:50:29

回答

0

我會給你一個想法。不知道它是否符合您的要求,並且可能需要更多地處理它,但它有點接近我從您的問題中瞭解的內容:

json_data插件,如上所述該documentation,幾乎是一樣的jQuery ajax settings object

考慮到這一點,你可以重定向/進行AJAX查詢到自定義功能利用的beforeSend() callback function

"json_data": { 
     "ajax": { 
      beforeSend: function(xhr) { 
       my_custom_function(xhr); 
      } 
     } 
    } 

,並定義自定義函數,其中你可以採取 在XHR對象並調整到您的需要:

function my_custom_function(xhr) { 
    $.ajax($.extend(xhr, { 
     type: 'GET', 
     url: '/folders/tree_handler.json', 
     data: { 
      "operation": "get_children", 
      "parent_id": 1 
     } 
    })); 

    return false; 
} 

我在做什麼這裏設置的URL,請求類型(GET)和一對夫婦的參數,你可以想傳遞給自定義函數作爲另一個對象,任何更方便的(例如,你會希望parent_id是可變的)。

您需要在此自定義函數中返回false,以便第一個調用者請求被取消。

請讓我知道它是否有幫助。

+0

感謝您的建議!我意識到並在使用ajax調用之前使用全局的.ajaxSend()來調用函數。但我並不知道beforeSend()回調。看起來很有希望。我剛剛與其他的東西很忙碌,但是當我有時間的時候,我會深入研究文檔,看看我能否得到這個工作。我會及時向大家發佈。 – 2012-03-05 17:12:40