2012-03-02 39 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