无法从IE中的jsTree中删除元素

时间:2015-05-15 20:06:09

标签: javascript jquery jstree

我在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语句。这实际上是有效的。

1 个答案:

答案 0 :(得分:1)

这可能是一个缓存问题。由于jsTree中的core.data是标准的jQuery AJAX配置,因此尝试添加:

'data': {
    'cache' : false,
    'url': function (node) ...

这将使jQuery为您的GET请求添加一个时间戳,这将破坏缓存,您将始终点击服务器。