1

同样的老故事:某些东西在 Firefox / Chrome 中有效,但在 IE 中无效。

var reason = '';
if (data.documentElement.getElementsByTagName("DNFReason")[0].childNodes[0] !== undefined)
{   reason = data.documentElement.getElementsByTagName("DNFReason")[0].childNodes[0].nodeValue; }

这是我发现的第一个可行的解决方案,用于从 Javascript 中的 XML 文档中获取 XML 节点的值,所以我很沮丧,它显然在 IE 中不起作用。

如果节点有一个值,它工作正常,所以问题显然是由一个空/未定义的节点引起的。

有人对此有任何智慧吗?我也在寻找一种稍微不那么冗长的编码方式(可能在 jQuery 中),但我受到时间限制,没有时间像我需要的那样进行研究。

添加了完整的ajax请求:

            $.ajax({
                type: "GET",
                url: "SheriffWS.asmx/GetGroupByID",
                data: 'GroupID=' + $("#<%=Groups.ClientID() %>").val(),
                dataType: "xml",
                success: function(data) {
                    var gtype = '';
                    var reason = '';
                    var nme = '';
                    var ttype = '';
                    var ttypeid = 0;

                    if (data.documentElement.getElementsByTagName("Type")[0].childNodes[0] !== undefined) {
                        gtype = data.documentElement.getElementsByTagName("Type")[0].childNodes[0].nodeValue;
                    }

                    if (data.documentElement.getElementsByTagName("Name")[0].childNodes[0] !== undefined) {
                        nme = data.documentElement.getElementsByTagName("Name")[0].childNodes[0].nodeValue;
                    }

                    if (data.documentElement.getElementsByTagName("DNFReason")[0].childNodes[0] !== undefined) {
                        reason = data.documentElement.getElementsByTagName("DNFReason")[0].childNodes[0].nodeValue;
                    }

                    if (data.documentElement.getElementsByTagName("TestName")[0].childNodes[0] !== undefined) {
                        ttype = data.documentElement.getElementsByTagName("TestName")[0].childNodes[0].nodeValue;
                    }

                    if (data.documentElement.getElementsByTagName("TestTypeID")[0].childNodes[0] !== undefined) {
                        ttypeid = data.documentElement.getElementsByTagName("TestTypeID")[0].childNodes[0].nodeValue;
                    }

                    $("#groupinfo-name").val(nme);
                    $("#hid-name").val(nme);

                    $("#groupinfo-type").val(gtype);
                    $("#groupinfo-testtype").val(ttype);
                    $("#groupinfo-testtypeid").val(ttypeid);
                    if (data.documentElement.getElementsByTagName("DNF")[0].childNodes[0].nodeValue == 'false') {
                        $("#groupedit-dnf").removeAttr('checked');
                        $("#groupedit-dnf-li").hide();
                    }
                    else {
                        $("#groupedit-dnf").attr('checked', 'checked');
                        $("#groupedit-dnf-li").show();
                    }

                    $("#<%=GroupEditDNFReason.ClientID() %>").val(reason);
                    $("#hid-dnfreason").val(reason);
                },
                error: function(msg) {

                }

            });
4

0 回答 0