繁体   English   中英

如何使用查询中的数组值过滤 XML 数据

[英]How to filter XML data with the array values in query

我的问题是如何使用值数组过滤 xml 数据集。 这里是下面的 jquery 代码和 xml 数据。 帮助解决问题。 我使用了过滤器功能,但它不起作用

JS - 代码

    var data = response.results[1][0].Variant;
    var arrdata = data.split(';');
    arrdata.shift(); // *result : ["1", "2", "3"]*
    function loadfail(){
        alert("Error: Failed to Load Menu Data : XML");
        }
        $.ajax({
        url: '/Prueba/FCD/menudata/menu.xml',  
        dataType: 'xml',
        success: menu,
        error: loadfail
        });
function menu(document){
                $(document).find("variant")
                .filter(function () {
                    return $(this).find('value').text()==arrdata
                })
                .each(function () {
                    var variant_Label = $(this).find('text').text();
                    var variant_Value = $(this).find('value').text();
                    $('#variant_model').append(
                   '<option value="'+ variant_Value + '">' + variant_Label + '</option>'
                    );
                })
            }

XML - 数据

<menu>
<variant>
    <value>1</value>
    <text>12 pa</text>
</variant>
<variant>
    <value>2</value>
    <text>30 pa</text>
</variant>
<variant>
    <value>3</value>
    <text>40 pa</text>
</variant>
<variant>
    <value>4</value>
    <text>50 pa</text>
</variant>
</menu>

XML 数据被加载并过滤动态值并赋予它。

$("#variant_model").empty()

                    var data = response1.results[1][0].Variant;
                    var arrdata = data.split(';');
                    arrdata.shift();
                    function loadfail() {
                        alert("Error: Failed to Load Menu Data : XML");
                    }
                    $.ajax({
                        url: '/Prueba/FCD/menudata/menu.xml',
                        success: menu,
                        error: loadfail
                    });
                    console.log(arrdata);

                    function menu(document) {
                        var array2 = arrdata;
                        var array1 = []
                        $(document).find("variant").each(function () {
                            var text = $(this).find('text').text();
                            var value = $(this).find('value').text();
                            var combo = { text, value }
                            array1.push(combo)
                        })
                        array1 = array1.filter(function (item) {
                            return array2.includes(item.value);
                        })

                        array1.forEach(function (item) {
                            $("#variant_model").append($("<option></option>").val(item.value).html(item.text));
                        })
                        $('#variant_model option[value="' + response.item[0][0].Variant + '"]').attr('selected', true);

                    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM