将xml结果拆分为下拉列表

时间:2015-03-25 12:53:49

标签: javascript jquery xml

希望有人可以提供帮助 - 我是js / jQuery的新手,所以我希望这里的东西非常简单,我在这里缺席。

我正在尝试使用下面的xml结果填充下拉列表。 parseXML函数效果很好, result.push(valueid +“,”+ value)给我留下了以下内容:

1,服务

2,击穿

我如何将其纳入下拉列表中?使用下面的内容,我收到错误“对象不支持属性或方法'拆分'

非常感谢

莱迪

function testFunction() {

var jobresults = "<resultset morerecords='0'> " +
                        "<result> " +
                            "<itt_jobtypeid>1</itt_jobtypeid> " +
                            "<itt_name>Service</itt_name> " +
                        "</result> " +
                    "<result> " +
                        "<itt_jobtypeid>2</itt_jobtypeid> " +
                            "<itt_name>Breakdown</itt_name> " +
                        "</result> " +
                    "</resultset> ";

    var xml = parseXML(jobresults);

    var jobid = xml.getElementsByTagName("itt_jobtypeid");
    var jobname = xml.getElementsByTagName("itt_name");
    var result = [];

    for (var i = 0; i < jobid.length; i++) {
        var valueid = jobid[i].childNodes[0].nodeValue;
        var value = jobname[i].childNodes[0].nodeValue;
        // add longitude value to "result" array
        result.push(valueid + "," + value);
    }

    var jobtype = $("#ddlJobType");

    $.each(result, function () {
        var arr = result.split(',');
        for (var i = 0; i < arr.length; i++) {
            jobtype.append($("<option />").val(arr[0]).text(arr[1]));
        }
    });   

}

function parseXML(text) {
    if (window.DOMParser) {
        parser = new DOMParser();
        doc = parser.parseFromString(text, "text/xml");
    }
    else { // Internet Explorer
        doc = new ActiveXObject("Microsoft.XMLDOM");
        doc.async = "false";
        doc.loadXML(text);
    }
    return doc;
}

2 个答案:

答案 0 :(得分:1)

如果优化result数组的数据结构,它可以更简单,更清晰。推送具有值和标签的对象,以便您可以在以下之后直接使用attr方法:

for (var i = 0; i < jobid.length; i++) {
    var valueid = jobid[i].childNodes[0].nodeValue;
    var value = jobname[i].childNodes[0].nodeValue;
    // add longitude value to "result" array
    result.push({value: valueid, label: value});
}

var jobtype = $("#ddlJobType");

$.each(result, function (i, obj) {
    $('<option>').attr(obj).appendTo(jobtype);
});

答案 1 :(得分:0)

https://api.jquery.com/jquery.each/。回调函数将每个作业类型作为函数的参数。 尝试将代码更改为:

$.each(result, function (idx, value) {
    var arr = value.split(',');
    for (var i = 0; i < arr.length; i++) {
        jobtype.append($("<option />").val(arr[0]).text(arr[1]));
    }
});