我试图用从服务获得的JSON数据填充JSTree (这称为ajax)。但是,我在jquery.jstree.js文件中得到的“既不是数据也不是ajax设置提供的错误”。因此,JSTree只显示一个加载gif。
AJAX代码(编辑以尝试将json设置为局部变量测试,然后返回测试)
function getJSONData() {
var test;
$
.ajax({
async : true,
type : "GET",
url : "/JavaTestService/rs/TestService/MyFirstTestService?languageCode=en_US&version=2",
dataType : "json",
success : function(json) {
test = json;
},
error : function(xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
test = "error";
}
});
return test;
}
JSTree代码
var jsonData = getJSONData();
createJSTrees(jsonData);
function createJSTrees(jsonData) {
$("#supplierResults").jstree({
"json_data" : {
"data" : jsonData
},
"plugins" : [ "themes", "json_data", "ui" ]
});
经过一些调试后,我发现当传递给jsonData方法时,createJSTrees是未定义的。我是否在Ajax代码中正确地检索了该数据?提前感谢
发布于 2013-06-04 16:37:14
我以前还没有测试过您的方法,您可以直接将数据参数提供给json_data插件,所以我无法提供这个场景的答案。
但是,由于您使用AJAX调用来获取数据,所以不能将AJAX调用提供给JSTree并让它自己处理调用吗?下面是我如何在代码中配置AJAX调用:
(...)
'json_data': {
'ajax': {
'url': myURL,
'type': 'GET',
'data': function(node) {
return {
'nodeId': node.attr ? node.attr("id") : ''
};
}
},
'progressive_render': true,
'progressive_unload': false
},
(...)
发布于 2013-06-04 16:54:41
jsonData未定义,因为getJSONData()不返回值。除非为$.ajax调用完成后返回的getJSONData()分配一个局部变量,否则不能依赖于$.ajax成功处理程序的返回值。但是您需要这样的东西,它还具有异步性的好处:
<script type="text/javascript">
$(function() {
$.ajax({
async : true,
type : "GET",
url : "/JavaTestService/rs/TestService/MyFirstTestService?languageCode=en_US&version=2",
dataType : "json",
success : function(json) {
createJSTrees(json);
},
error : function(xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
});
function createJSTrees(jsonData) {
$("#supplierResults").jstree({
"json_data" : {
"data" : jsonData
},
"plugins" : [ "themes", "json_data", "ui" ]
});
}
</script>
https://stackoverflow.com/questions/16922984
复制相似问题