使用jquery检索多个JSON文件

时间:2016-10-19 10:26:51

标签: javascript jquery json

我想从多个json文件中检索数据。我能够从一个json文件向表中追加数据。但是,当我想从多个json文件中提取数据时,它无法正常工作。我的代码是:

var uri = 'sharepointmodel.json';
var uri2 = 'navisioncustomer.json';

function find(sharepointmodel) {
    var info = $('#KUNDE').val()
    $("#loader").show();
    $.getJSON(uri).done(function (data) {                       
        var item = data.filter(function (obj) {
            return obj.name === info || obj.ID === info;
        })[0];

        if (typeof item ==='undefined'){
            alert("Ukendt navn eller ID");
        }
        else if (typeof item !== 'undefined' || item !== null) {                              
            $("table.table").append("<tr><td> " + item.name + item.url + "</td></tr>");
        }                                                
    }).fail(function (jqXHR, textStatus, err) {                     
            $('#ERROR').text('Kan ikke oprette forbindelse til serveren!');
    }).always(function (){
        $("#loader").hide();
    }); 
} 

function find(navisioncustomer) {
    var info2 = $('#KUNDE').val()
    $("#loader").show();
    $.getJSON(uri2).done(function (data) {                       
        var item = data.filter(function (obj) {
            return obj.name === info2 || obj.ID === info2;
        })[0];

        if (typeof item ==='undefined'){
            alert("Ukendt navn eller ID");
        }
        else if (typeof item !== 'undefined' || item !== null){                              
            $("table.table2").append("<tr><td> " + item.name + item.phone + "</td></tr>");
        }                                                
    }).fail(function (jqXHR, textStatus, err) {                     
        $('#ERROR').text('Kan ikke oprette forbindelse til serveren!');
    }).always(function (){
        $("#loader").hide();
    }); 
}

3 个答案:

答案 0 :(得分:1)

两个函数名都相同,find()。这就是为什么只有一个函数被调用而你的数据只从一个文件中追加的原因。

要么具有不同的函数名称,要么具有一个函数,并将uri变量传递给它,例如

  function find(json_uri) {
    var info = $('#KUNDE').val()
    $("#loader").show();
    $.getJSON(json_uri).done(function(data) {
        var item = data.filter(function(obj) {
            return obj.name === info || obj.ID === info;
        })[0];
        if (typeof item === 'undefined') {
            alert("Ukendt navn eller ID");
        } else if (typeof item !== 'undefined' || item !== null) {
            $("table.table").append("<tr><td> " + item.name + item.url + "</td></tr>");

        }
    }).fail(function(jqXHR, textStatus, err) {
        $('#ERROR').text('Kan ikke oprette forbindelse til serveren!');
    }).always(function() {
        $("#loader").hide();
    });
}

要向两者追加数据,您必须进行两次调用

find(uri);
fin(uri2);

答案 1 :(得分:0)

您有2个具有相同名称的功能,请按以下方式重构您的代码:

  var uri = 'sharepointmodel.json';
    var uri2 = 'navisioncustomer.json';   
    function find(uri,callback) {
        var info = $('#KUNDE').val()
            $("#loader").show();
            $.getJSON(uri).done(function (data) {                       
        var item = data.filter(function (obj) {
            return obj.name === info || obj.ID === info;
            })[0];
            if (typeof item ==='undefined'){
                alert("Ukendt navn eller ID");
            }
            else if (typeof item !== 'undefined' || item !== null){                              
           callback(item);

            }                                                
            }).fail(function (jqXHR, textStatus, err) {                     
                $('#ERROR').text('Kan ikke oprette forbindelse til serveren!');
            }).always(function (){$("#loader").hide();
            }); 
            } 

要调用函数,请执行以下操作:

find(uri,function(item){
 $("table.table").append("<tr><td> " + item.name + item.url + "</td></tr>");
});
find(uri2,function(item){
$("table.table2").append("<tr><td> " + item.name + item.phone + "</td></tr>");
});

答案 2 :(得分:0)

    var uri1 ='http://';
    var uri2 ='http://';           
    function find() {
    var info1 = $('#KUNDE').val()
        $("#loader").show();
    $.getJSON(uri2) .done(function (data) {            
    var item = data.filter(function (obj) {
    return obj.name === info1 || obj.ID === info1;
        })[0];
    if (typeof item !== 'undefined' || item !== null) {                 
        $("table.table").append("<thead><tr><th>Name</th><th>SP-Mapper</th></tr></thead>");                                                        
        $("table.table").append("<tr><td> " + item.name +" </td><td><a href='https://"+item.url+ "'target='_blank'><i class='glyphicon glyphicon-file'></i></a>"+"</td></tr>");
        }                                 
        }).fail(function (jqXHR, textStatus, err) {                     
        $('#ERROR').text('Kan ikke oprette forbindelse til serveren! '/* + err*/);}).always(function (){$("#loader").hide();
        }); 
    var info2 = $('#KUNDE').val()
        $("#loader").show();
    $.getJSON(uri1).done(function (data) {        
        var item = data.filter(function (obj) {
    return obj.name === info2 || obj.ID === info2;
        })[0];
    if (typeof item !== 'undefined' || item !== null) {                
        $("table.table2").append("<tr><td>ID      = " + item.ID + "</td><td>Name    = " + item.name + "</td><td>Phone      = " + item.phone + "</td><td>Contact       = " + item.contact + "</td><td>BalanceLCY      = " + item.balanceLCY + "</td><td>CreditLimitLCY       = " + item.creditLimitLCY + "</td></tr>");
        }                                 
        }).fail(function (jqXHR, textStatus, err) {                     
        $('#ERROR').text('Kan ikke oprette forbindelse til serveren! '/* + err*/);}).always(function (){$("#loader").hide();
        }); 
        }