Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从Json筛选数组_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 从Json筛选数组

Javascript 从Json筛选数组,javascript,jquery,ajax,Javascript,Jquery,Ajax,下面的脚本从json文件中过滤数据,并在div中显示结果。我需要检查数组中过滤的数据,以显示更多的数据化结果 脚本 $(function(){ $.getJSON("comuni.php", function(jsonData) { var jsonData = jsonData; var nomeComune = jQuery.map(jsonData, function(item, index) { return item.no

下面的脚本从json文件中过滤数据,并在div中显示结果。我需要检查数组中过滤的数据,以显示更多的数据化结果

脚本

$(function(){
    $.getJSON("comuni.php", function(jsonData) {
        var jsonData = jsonData;
        var nomeComune = jQuery.map(jsonData, function(item, index) {
            return item.nomeComune;
        });
        $( "#comuni" ).autocomplete({
            source: nomeComune,
            minLength: 2,
            select:function(event, ui){
                var filterData = jsonData.filter(user => user.nomeComune == ui.item.value);
                var userData = '<ul>';
                userData +=  '<li>Il Comune di <strong>'+filterData[0]['nomeComune']+'</strong> <strong>('+filterData[0]['provincia']+')</strong></li>';
                userData +=  '<li>è in presubentro dal <strong>'+filterData[0]['datasub']+'</strong></li>';
                userData +=  '<li>è subentrato il <strong>'+filterData[0]['datapresub']+'</strong></li>';
                userData += '</ul>';
                $('#results').html(userData);
                console.log(filterData[0]);
                $('.results').slideDown( "slow", function() {
                    // Animation complete.
                });
                $(".results").click(function () {
                    $(this).slideUp( "slow", function() {
                        // Animation complete.
                    });
                });
            },
        });
    });
});
我需要检查datasubdatapresub的值是否为空,并相应地显示结果。例如:

如果值datasub为空,则结果应为:

var userData = '<ul>';
userData +=  '<li>Il Comune di <strong>'+filterData[0]['nomeComune']+'</strong> <strong>('+filterData[0]['provincia']+')</strong></li>';
userData +=  '<li>è in presubentro dal <strong>'+filterData[0]['datapresub']+'</strong></li>';
userData += '</ul>';
var userData = '<ul>';
userData +=  '<li>Il Comune di <strong>'+filterData[0]['nomeComune']+'</strong> <strong>('+filterData[0]['provincia']+')</strong></li>';
userData +=  '<li>è subentrato il <strong>'+filterData[0]['datasub']+'</strong></li>';
userData += '</ul>';
var userData='
    '; 用户数据+='
  • Il-Comune di'+filterData[0]['nomeComune']+'('+filterData[0]['provincia']+')
  • ; 用户数据+='
  • èin presubentro dal'+filterData[0]['datapresub']+'
  • '; 用户数据+='
';
如果值datapresub为空,则结果应为:

var userData = '<ul>';
userData +=  '<li>Il Comune di <strong>'+filterData[0]['nomeComune']+'</strong> <strong>('+filterData[0]['provincia']+')</strong></li>';
userData +=  '<li>è in presubentro dal <strong>'+filterData[0]['datapresub']+'</strong></li>';
userData += '</ul>';
var userData = '<ul>';
userData +=  '<li>Il Comune di <strong>'+filterData[0]['nomeComune']+'</strong> <strong>('+filterData[0]['provincia']+')</strong></li>';
userData +=  '<li>è subentrato il <strong>'+filterData[0]['datasub']+'</strong></li>';
userData += '</ul>';
var userData='
    '; 用户数据+='
  • Il-Comune di'+filterData[0]['nomeComune']+'('+filterData[0]['provincia']+')
  • ; userData+='
  • è子集中il'+filterData[0]['datasub']+'
  • '; 用户数据+='
';

感谢您的帮助。谢谢

如上所述,您可以执行以下操作。我添加了两个helper函数以使事情更整洁。只需将
filterData[0]
传递给函数
getData()
,它将返回填充的无序列表

$(function(){
    $.getJSON("comuni.php", function(jsonData) {
        var jsonData = jsonData;
        var nomeComune = jQuery.map(jsonData, function(item, index) {
            return item.nomeComune;
        });
        $( "#comuni" ).autocomplete({
            source: nomeComune,
            minLength: 2,
            select:function(event, ui){
                var filterData = jsonData.filter(user => user.nomeComune == ui.item.value);
                var userData = getData(filterData[0]);     // <-- Changed here
                $('#results').html(userData);
                console.log(filterData[0]);
                $('.results').slideDown( "slow", function() {
                    // Animation complete.
                });
                $(".results").click(function () {
                    $(this).slideUp( "slow", function() {
                        // Animation complete.
                    });
                });
            },
        });
    });


    // Some helper functions
    function getData(data) {
        let returnValue = '<ul>';

        if( existsAndNotEmpty(data['nomeComune']) && existsAndNotEmpty(data['provincia']) ) {
            returnValue += '<li>Il Comune di <strong>'+data['nomeComune']+'</strong> <strong>('+data['provincia']+')</strong></li>';
        }

        if( existsAndNotEmpty(data['datasub']) ) {
            returnValue += '<li>è subentrato il <strong>'+data['datasub']+'</strong></li>';
        } else if ( existsAndNotEmpty(data['datapresub']) ) {
            returnValue += '<li>è in presubentro dal <strong>'+data['datapresub']+'</strong></li>';
        }

        return returnValue + '</ul>';
    }


    function existsAndNotEmpty(value) {
        if (typeof value != 'undefined' && value.length > 0) {
            return true;
        }
        return false;
    }
});
$(函数(){
$.getJSON(“comuni.php”,函数(jsonData){
var jsonData=jsonData;
var nomeComune=jQuery.map(jsonData,函数(项,索引){
返回项目.nomeComune;
});
$(“#comuni”)。自动完成({
资料来源:nomeComune,
最小长度:2,
选择:功能(事件、用户界面){
var filterData=jsonData.filter(user=>user.nomeComune==ui.item.value);
var userData=getData(filterData[0]);//0{
返回true;
}
返回false;
}
});

看起来非常简单,与ajax或jQuery无关。只需使用
if(datasub){…}else{…}
…等等。很抱歉,这是非常基本的。仅供参考,您的代码会让您面临XSS攻击。切勿将文本数据直接连接到HTML上下文中。请使用
innerText
,或者使用适当的模板引擎。