javascript help - делать что-то новое по-старому - PullRequest
1 голос
/ 14 октября 2011

ОБНОВЛЕНИЕ: Некоторые говорят, что им удалось получить более 1 childNode ... Вот моя скрипка - у меня отображается только 1 childNode.

Где ошибка?

ОРИГИНАЛЬНЫЙ Вопрос Ниже приведен фрагмент кода JavaScript, который я унаследовал. В основном эта функция используется для получения данных XML путем вызова функции AJAX. Однако из-за изменений требований я генерирую строку XML и сохраняю эту строку в скрытой входной переменной на экране ( Classic 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 Ответ

2 голосов
/ 14 октября 2011

parseXML возвращает XMLDocument. Вам нужно установить cmdxml zo $ .parseXML ('snippet'). DocumentElement для доступа к childNodes (childNodes - это свойство узлов, обычно недоступное в документах).

Ваша скрипка возвращает childNode, но это корневой элемент, вы хотите получить доступ к childNodes корневого элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...