在非叶节点的select_node.jstree事件期间调用时,.ajax调用不起作用

时间:2013-12-01 08:54:11

标签: javascript jquery ajax

当调用$ .ajax时,它会在select_node.jstree事件被触发时返回信息,除非它用于非叶子节点。在这种情况下,服务器接收ajax调用并返回数据,但由于某种原因,永远不会调用success函数。这是代码:

$("#demo1").jstree({ "plugins": ["themes", "html_data", "ui"] })
   .bind("select_node.jstree",
     function(event, data1) {
       var agentId = data1.rslt.obj.attr("id");
       $.ajax({
         url: '@Url.Action("GetAgentInfo", "Home")',
         dataType: 'json',
         type: 'POST',
         data: { id: agentId },
         success: function(msg) {
           $("#agentDisplay").html("Agent Name:" + msg.LastName + ", " + msg.FirstName);
         },
         failure: function() { alert('error'); }
       });
     });
  });

HTML看起来像:

<ul>
    <li id="1"> <a href="#">Parent 1</a>
        <ul>
            <li id="11"> <a href="#">Child 1</a>
                <ul>
                    <li id="1026"> <a href="#">Leaf 1</a>
                    </li>
                </ul>
            </li>
        </ul>
        <ul>
            <li id="1013"> <a href="#">Leaf 2</a>
            </li>
        </ul>
        <ul>
            <li id="1021"> <a href="#">Leaf 3</a>    
            </li>
        </ul>
    </li>
</ul>

Leaf 1,2和3返回信息就好了。父1和子1命中服务器方法并返回数据,但不调用success方法。

任何帮助将不胜感激。我确定它是一种愚蠢的东西,我忽视了。

1 个答案:

答案 0 :(得分:0)

我最近使用的是jstree,我遇到了一个类似的问题,我无法将事件绑定到我的树上。我能让它工作的唯一方法是首先绑定然后使用jstree。以下是您的代码的外观:

jQuery("#demo1")
   .bind("select_node.jstree",
   function(event, data1) {
   var agentId = data1.rslt.obj.attr("id");
   $.ajax({
             url: '@Url.Action("GetAgentInfo", "Home")',
             dataType: 'json',
             type: 'POST',
             data: { id: agentId },
             success: function(msg) {
             $("#agentDisplay").html("Agent Name:" + msg.LastName + ", " + msg.FirstName);
                         },
                        failure: function() { alert('error'); }
                    });
                });
    })
.jstree({ "plugins": ["themes", "html_data", "ui"] });