当调用$ .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方法。
任何帮助将不胜感激。我确定它是一种愚蠢的东西,我忽视了。
答案 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"] });