0

当我尝试创建节点时,我遇到了特定的麻烦。从上下文菜单中一切都会好起来的,但是当我从按钮调用创建事件时,我没有 AJAX 请求。

看:

    bind("create.jstree", function (e, data) {
    console.log('creating');

    $.ajax({
        type: 'post',
        url: '/item/add',
        data: {
            name:  data.rslt.name,
            id_menu_content_parent: data.rslt.parent.attr("id").replace("node_",""),
            id_type_object: data.rslt.obj.attr("rel")
        },
        success: function (dataItem){
        }
    });
    console.log('end');
});

现在,当我从上下文菜单调用正常时,我看到 sting created 下一个 AJAX 请求,最后是字符串结束,但是当我单击按钮时,我看到字符串创建,仅此而已。

我该怎么办?

4

1 回答 1

1

当从上下文菜单调用时创建工作但使用按钮调用时不起作用的最可能原因是,对于上下文菜单,您可能在调用创建回调时选择了一个树节点。但是,当您从按钮调用创建回调时,您可能不一定选择了节点。这很可能会导致您的$.ajax调用失败,因为它试图引用未定义的属性。具体来说,data.rslt.parent.attr("id")将失败,因为如果您没有选择节点,您的新节点将在父级别创建,因此data.rslt.parent值为-1. 这应该可以解释为什么您没有看到您的console.log('end')输出。

从你的问题我猜你没有使用调试器来调试你的javascript。如果你打算做任何严肃的开发,你不能依赖printf样式调试,特别是因为你的浏览器可能已经有一个 javascript 调试器。如果您通过调试器运行代码,您将能够立即在帖子中看到导致问题的原因。学习有效地使用调试器可能需要一段时间,但它会为您节省更多时间并帮助您编写更好的代码。

顺便说一句,我建议您在 FireFox 中使用 Firebugs 或 Chrome 调试您的代码,因为这两种浏览器都提供了很好的开发工具。

于 2012-05-08T21:22:57.253 回答