Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ext:如何使用ajax请求中的数据修改现有的Javascript元素?_Javascript_Ajax_Extjs - Fatal编程技术网

Ext:如何使用ajax请求中的数据修改现有的Javascript元素?

Ext:如何使用ajax请求中的数据修改现有的Javascript元素?,javascript,ajax,extjs,Javascript,Ajax,Extjs,几天来,我一直在寻找一个关于如何正确操作的解释。我试图为JS或Ajax找到一个像样的教程,但我找到的所有教程都非常基础,不够深入。当我想用Python解决一个问题时,我会去Python.org,对于PHP我使用PHP.net,但是我还没有找到一个适合JS和Ajax的资源。任何提示都将不胜感激 所以我会尽力解释我做了什么。我有一个相当简单的页面,左边有一个div,右边有一个div。在左视图中,呈现一棵树,表示注册表;在右视图中,显示和编辑值 树存储在全局变量中。我已经阅读了所有关于使用全局变量的警

几天来,我一直在寻找一个关于如何正确操作的解释。我试图为JS或Ajax找到一个像样的教程,但我找到的所有教程都非常基础,不够深入。当我想用Python解决一个问题时,我会去Python.org,对于PHP我使用PHP.net,但是我还没有找到一个适合JS和Ajax的资源。任何提示都将不胜感激

所以我会尽力解释我做了什么。我有一个相当简单的页面,左边有一个div,右边有一个div。在左视图中,呈现一棵树,表示注册表;在右视图中,显示和编辑值

树存储在全局变量中。我已经阅读了所有关于使用全局变量的警告,但我认为在这种情况下这是合理的。无论何时访问此页面,都会显示树

var tree;
...
function initTree(treeRootConfig) {
    return new Ext.tree.TreePanel({
         renderTo   : 'tree'
        ,width      : 500
        ,height     : 498
        ,autoScroll : true
        ,resizable  : true

        ,useArrows  : false
        ,animate    : true
        ,loader     : {
            dataUrl  : urls.urlLoadTree,
            listeners: { beforeload : function(treeLoader, node) {} }
            },listeners: {
                 click       : function(node, e) { valueGrid.load(node.id); }
                ,contextmenu : function(node, e) {
                    cmPath.node = node;
                    cmPath.showAt(e.getXY());
            }, 
        },root     : treeRootConfig
    });
}
有一个文本字段,它保存树显示的路径的文本表示

function initTextfieldPath() {
    return new Ext.form.TextField({
        fieldClass     : 'textfieldPath', 
        applyTo        : 'path',
        enableKeyEvents: 'true',
        listeners      : { change : function() { refreshTree(); } },
    });
}
每个节点都是路径中的“文件夹”。现在,当访问一个新节点时,textfield的值会相应地修改。这很好用。在文本字段中输入新路径时,我希望重新加载树以显示节点。解析路径,然后使用Ajax将节点从数据库中取出。这非常有效,我得到了节点的字符串表示,通过JSON编码,并尝试将节点设置为树的新根

function refreshTree() {    
    Ext.Ajax.request({
         url    : urls.DirectAccess
        ,scope  : tree
        ,params : { path: textfieldPath.getValue() }
        ,success: function(response, opts) {
            alert(response.responseText);
            tree.setRootNode(Ext.util.JSON.decode(response.responseText)); }
        ,failure: function(response, opts) { noConnection(response); }
    });
}
正如您可以想象的那样,警报仅用于测试目的。服务器请求完成后,将显示从数据库中获取的节点的字符串表示。仅将此节点设置为树是我无法完成的事情


我们拥有的ext许可证是针对ext3.4.0的。

问题完全是另外一回事。我认为不可能从Ajax语句内部与Ajax语句外部声明的变量通信。原来我的“[”和“]”太多了。我的目标期望类似于“”的内容,但我给了它一个只有一个成员“[]”的数组。这有点奇怪,因为在其他情况下,Ext只接受作为数组的节点,不管有多少个。

这个怎么样?看起来这可能和你的问题是同一个原因。谢谢你,克里斯,原来是另外一回事。