JS Tree настроен для внешнего AJAX - PullRequest
0 голосов
/ 02 марта 2012

Я разрабатываю приложение, которое использует JS Tree с данными json и ajax в соответствии с документацией http://www.jstree.com/documentation/json_data.

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

Есть и другие вызовы jquery ajax, сделанные в других местах документа. Прямо сейчас дерево делает свои вызовы ajax в своем собственном пространстве имен, поэтому нет никаких конфликтов с другими функциями ajax. Из-за проблем с сервером, который отвечает на вызовы ajax, мне нужно перенаправить вызовы дерева ajax через общий обработчик ajax, используемый остальной частью документа, и затем заставить этот обработчик вернуть данные обратно в дерево.

Кто-нибудь может подсказать, как перенаправить вызовы дерева в другую функцию и настроить обратный вызов для возврата данных обратно в дерево? Спасибо!

1 Ответ

0 голосов
/ 05 марта 2012

Я дам вам идею. Не уверен, что он будет соответствовать вашим требованиям, и, возможно, вам нужно будет немного проработать его, но это как-то близко к тому, что я понял из вашего вопроса:

Плагин json_data , как указано в документации , во многом совпадает с объектом настроек jQuery

Имея это в виду, вы можете перенаправить / выполнить 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 в этой пользовательской функции, чтобы первый запрос вызывающего абонента был отменен.

Пожалуйста, дайте мне знать, если это полезно.

...