【发布时间】:2015-05-29 21:35:33
【问题描述】:
在我的网站上,我使用来自http://www.jqwidgets.com 的 jqxTree。如果你想查找一些东西,你可以在这里找到 API:http://www.jqwidgets.com/jquery-widgets-documentation/documentation/jqxtree/jquery-tree-api.htm
这棵树提供了一个select-event 处理程序,因为我正在构建从根项到选定元素的路径。然后我想通过 JQuery $.post 将该路径传递给我的后端服务器实现。
$('#jqxTree').on('select',function (event) {
var item = $('#jqxTree').jqxTree('getSelectedItem');
var cur = $('#jqxTree').jqxTree('getItem', item.parentElement);
var result = [item];
while (cur != null) {
result.unshift(cur);
cur = $('#jqxTree').jqxTree('getItem', cur.parentElement);
}
// this loop is mainly for testing purposes
var str = "";
for (var i = 0; i < result.length; i++) {
str += result[i].label + " > ";
}
alert("The selected path is " + str);
$.post("TreeSelectHandler", {
'path': result
});
});
执行此代码会导致完美的警报输出,因此代码运行良好。但是当我尝试执行发布请求时,JQuery 会记录一个RangeError: Maximum call stack size exceeded。
发送 str 而不是 result 作为 post 参数可以正常工作,但我希望能够直接传递数组。我做错了什么或者我偶然发现了一个错误?
我使用的是 JQuery 1.10.2,至少在当前版本的 Chrome 和 Firefox 中会出现错误。
更新
尝试对数组进行字符串化,使用以下代码:
var jsonres = JSON.stringify(result);
$.post("TreeSelectHandler", {
'path': jsonres
}, null, 'text');
失败:
Uncaught InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable.
在第一行 (stringify)。
【问题讨论】:
-
您是否尝试过传递 JSON 字符串化数组?
标签: javascript jquery