2013-11-12 5 views
0

У меня есть этот узел дерева, который был создан с http://mbraak.github.io/jqTree/. Я пытаюсь реализовать это дерево, так что, когда пользователь нажимает на узел в дереве, он отправляет данные в мой сервлет. Есть какой-либо способ сделать это? В настоящее время я использую JSP. Мое первоначальное решение заключалось в том, чтобы добавить кнопку, чтобы кнопка (с тегом формы) выполняла post-действие при нажатии (после выбора моего узла), но я хотел бы знать, есть ли какое-либо решение без использования кнопки. Я также подумал о том, чтобы использовать ajax, но im new для этого, и не уверен, работает ли он. На самом деле нужна помощь. Благодаря My Tree:Передача данных формы JSP в сервлет

$('#tree1').tree({data: data}); 
    $('#tree1').bind(
      'tree.click', 
      function(event) { 
       if (event.node) { 
        // node was selected 
         node = event.node.name; 
        alert(node); 
        // send node value to servlet 
       } 
       else { 
       }}); 

HTML

<div id="tree1"></div> 

Моя Первоначальная идея

$('#saveCat').click(function(){ 
     document.getElementById('mainCat').value = node; 
     document.getElementById('action').value = "savecategory"; 
    }); 


    <form action="TopicCloudServlet"> 
    <button id="saveCat" class=" catbtn btn-primary">Save</button> 
    <input type="hidden" id="mainCat" name="mainCat" value="" /> 
    <input type="hidden" id="action" name="action" value="" /> 
    </form> 

ответ

0

Ok я нашел 1 решение, которое очень просто (почему я не думал об этом)

  1. Добавить идентификатор в форму, которая собирается быть представлены. .
  2. В JavaScript, где и хотите, чтобы ваша форма будет отправлена,

    document.forms [ "FormID"] представить();

0

Предполагая, что вы динамического создания дерева, вы можете добавить дополнительные элементы в качестве атрибутов для каждого узлов дерево при его рендеринге. Не беспокойтесь, ваши пользовательские атрибуты будут игнорироваться браузером.

Ниже «nodevalue» - ваш собственный атрибут, который вы добавляете в div динамически при рендеринге дерева, чтобы однозначно идентифицировать каждый узел.

<div id="tree1"> 
    <div nodevalue="node1" class="mynode"> 
    </div> 
    <div nodevalue="node2" class="mynode"> 
    </div> 
</div> 

Затем напишите селектор класса jquery onclick и получите уникальный идентификатор щелкнутого узла.

$(".mynode").on("click",function(){ 

    alert(this.attr("nodevalue")); 

}); 

this.attr("nodevalue")

даст значение узла, который в данный момент щелкнул.

+0

привет @ Тито Черячан, но, возможно, я не был достаточно ясным. Я могу получить значение узла, когда я нажимаю на него; на линии, где отображается предупреждение (узел) ;. То, что я хотел бы сделать, - это сделать метод формы после этой строки, чтобы отправить форму на мой сервлет. – user2541163

+0

Вы можете использовать ajax POST для отправки значения сервлету. Это поможет вам начать http://net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/ – cherit

+0

Исправьте меня, если я ошибаюсь, но в примере, который вы дали, используется кнопка для отправки формы. Что делать, если я хотел бы, чтобы это делалось без кнопки, например, когда я нажимаю на узел и использую ajax POST. Является ли это возможным? – user2541163

Смежные вопросы