javascript帮助 - 以旧学校的方式做一些新事物

时间:2011-10-13 21:38:16

标签: javascript jquery asp-classic

更新: 有人说他们能够获得超过1个孩子的节点... 这是我的fiddle - 我只有1个childNode要显示。

错误在哪里?

原始问题 下面是我继承的部分javascript代码片段。基本上这个函数用于通过调用AJAX函数来获取XML数据。但是,由于需求更改,我生成一个XML字符串并将该字符串存储在屏幕上的隐藏输入变量中(经典ASP )。

仔细观察原始脚本后,我发现如果我能以某种方式将xml字符串传递给 cmdxml 变量,那就太好了。但是,当我将cmdxml设置为等于我的xml字符串:cmdxml = $.parseXML(xmlVal);然后尝试使用下面的代码段时,它只获得1个子节点。我已经包含了一小段我正在下面传递的xml字符串。

旧的Javascript函数(部分)使用cmdxml:

    if (req.responseXML!=null) {
        var PropName;
        var PropValue;              
        var cmdxml = req.responseXML.documentElement;   
        // read each document element child node in the XML document

    for (var c =0;c<cmdxml.childNodes.length;c++) {
            var m;
            var t = cmdxml.childNodes[c];   //req.responseXML.documentElement.childNodes[c]
            if (t!=null) {
            //console.log(t.nodeName);
            switch(t.nodeName) {     //req.responseXML.documentElement.childNodes[c].nodeName
                    case "RObject": {   //response object
                        var RObject = t;    
                    //req.responseXML.documentElement.childNodes[c].nodeName.attributes[2].value
                    var CtrlChangeType = RObject.attributes[2].value;
                        var CtrlObjName = RObject.attributes[1].value;
                        var CtrlObjType = RObject.attributes[0].value;
                        var CtrlObj;

                    var RObjProp = RObject.getElementsByTagName("Property");
                    PropName =  RObjProp[0].attributes[0].value;
                        PropValue = getElementText(RObjProp[0].getElementsByTagName("Value")[0]);

                    switch (CtrlChangeType) {   //req.responseXML.documentElement.childNodes[c].nodeName.attributes[0].value
                        case "comboboxInsRow": {

以下是我传递的xml字符串片段:

<?xml version="1.0" ?><xCMDS><JCallBack ProgramName="x"><Value><![CDATA[top.closeCtrlLoading();]]></Value></JCallBack><RObject Type="E" Name="gH2ptObj_co_code" ChangeType="objProp" rowNum="" colNum=""><Property Name="value"><Value><![CDATA[]]></Value></Property></RObject>

1 个答案:

答案 0 :(得分:2)

parseXML返回一个XMLDocument ,.您需要设置cmdxml zo $ .parseXML('snippet')。documentElement来访问childNodes(childNodes是节点的属性,通常在文档中不可用)。

你的小提琴返回一个childNode,但这是root-element,你想访问root-element的childNodes。