我在html
页面中有一个自定义的jsTree。
当用户单击jsTree中的.delete
图标时,我将用户重定向到同一页面,查询字符串为" delete",然后我执行逻辑以从中删除该用户列表(也许这里的一些ajax会更加用户友好,但我实际上并没有对页面进行编码)。
这在Firefox和Chrome上顺利运行,但在IE上我遇到了一些麻烦。奇怪的麻烦。
首先:如果IE的开发者工具是开放的,那么事情就可以了。如果它不是,它就不起作用。 HTTP检查发现jsTree没有从定义的url
参数获取HTML,因此,它由服务器开始更新,但是jsTree没有获得更新的HTML。
有趣的是,如果开发人员工具处于打开状态,请求将被发送,一切正常。
这里是jsTree部分的代码:
$('#jstree_demo').jstree({
"core": {
"animation": 0,
"check_callback": true,
"themes": { "stripes": true },
'data': {
'url': function (node)
{
var ret = '/Some/Ajax/Page/Request.ashx?action=' + initialType;
if (node.data != null && node.data.nextType != null)
ret = '/Some/Ajax/Page/Request.ashx?action=' + node.data.nextType;
if (node.id === '#') {
ret += '&UserID=<%=Session("UserID")%>';
}
return ret;
}
}
},
"plugins": [
"search","state", "types", "wholerow"
]
}).on('changed.jstree', function (e, data) {
// some event handler
});
});
删除代码非常简单:一对update
语句。这实际上是有效的。
答案 0 :(得分:1)
这可能是一个缓存问题。由于jsTree中的core.data
是标准的jQuery AJAX配置,因此尝试添加:
'data': {
'cache' : false,
'url': function (node) ...
这将使jQuery为您的GET请求添加一个时间戳,这将破坏缓存,您将始终点击服务器。