0

状況を説明してください。さまざまな航空会社のフライト情報を提供するjsonデータがあります。価格、日付、すべてがありますが、必要な情報を希望する方法で取得できません。したがって、ここに来ます:

json データのコールバックに関する初心者向けの質問がもう 1 つあります。これまでのところ、Yograj Gupta の助けを借りて、json リスト データから航空会社名のリストを取得できました。この構造タイプはhttp://vteem.net/json.jsonです。コード:

$.getJSON("http://api.anywayanyday.com/api/NewRequest/?Route=2406MOWLON&AD=1&CN=0&CS=E&Partner=testapic&_Serialize=JSON&callback=?", function(data) {
        var code=data.Id;
        $.getJSON("http://api.anywayanyday.com/api/Fares/?R="+code+"&V=Matrix&VB=true&L=ru&_Serialize=JSON&callback=?", function(data) {
            var items = [];
            $.each(data, function(key, val) {
                if(val && (typeof val == 'object' || typeof val == 'array')){
                    if(key == "Airlines"){
                        var airlineNames = [];
                        for(var x in val)
                            airlineNames.push(val[x].Name);
                        items.push(airlineNames.join('<br/>'));
                    }
                }
            });
            $('<div/>', {
                'id': 'airlines',
                html: items.join('')
            }).appendTo('#data');
        });
    });

各航空会社の行内の合計金額を取得したいのですが、合計金額の値で並べ替えることはできますか?

助けてくれてありがとう、本当に感謝しています!

コードの更新:

$.getJSON("http://api.anywayanyday.com/api/NewRequest/?Route=2406MOWLON&AD=1&CN=0&CS=E&Partner=testapic&_Serialize=JSON&callback=?", function(data) {
        var code=data.Id;
        $.getJSON("http://api.anywayanyday.com/api/Fares/?R="+code+"&V=Matrix&VB=true&L=ru&_Serialize=JSON&callback=?", function(data) {
            var items = [];
            $.each(data, function(key, val) {
                if(val && (typeof val == 'object' || typeof val == 'array')){
                    if(key == "Airlines"){
                        var airlineNames = [];
                        for(var x in val)
                            airlineNames.push(val[x].Name);
                        items.push(airlineNames.join('<br/>'));

                        $.each(data, function(key, val) {
                            if(val && (typeof val == 'object' || typeof val == 'array')){
                                if(key == "FaresFull"){
                                    var totalAmounts = [];
                                    for(var y in val)
                                        totalAmounts.push(val[y].TotalAmount);
                                    items.push(totalAmounts.join('<br/>'));
                                }
                            }
                        });                     
                    }
                }
            });
            $('<div/>', {
                'id': 'airlines',
                html: items.join('')
            }).appendTo('#data');
        });
    });
4

1 に答える 1

1

あなたが何をしようとしているのか正確には理解できません... しかし、あなたのスクリプトにはいくつかの間違いがあります。主なものは次のとおり$.each(data, function(key, val) {です。この jsonp リクエストから渡されたデータは配列ではありません。オブジェです。このオブジェクトにはプロパティがあります: Airlines。したがって、すべての航空会社を繰り返しスローする場合は、data.Airlines を使用する必要があります。主なタスクがすべての航空会社名を出力することである場合、このスクリプトは機能します。

$.getJSON("http://api.anywayanyday.com/api/NewRequest/?Route=2406MOWLON&AD=1&CN=0&CS=E&Partner=testapic&_Serialize=JSON&callback=?", function(data) {
    var code=data.Id;
    $.getJSON("http://api.anywayanyday.com/api/Fares/?R="+code+"&V=Matrix&VB=true&L=ru&_Serialize=JSON&callback=?", function(data) {
        var airlineNames = [];
        $.each(data.Airlines, function() {                  
                airlineNames.push(this.Name);
        });
        $('<div/>', {
            'id': 'airlines',
            html: airlineNames.join(',')
        }).appendTo('#data');
    });
});​

それがあなたを助けることを願っています。

アップデート:

問題ありません)しかし、コードの主な問題は、すべてのjsonデータを再度反復する(ループインループ)ことです。それは最善の解決策ではありません。私はあなたのためにいくつかのデモを書きました。確認してください: DEMO . 私があなたの要件を理解したように、それは仕事をするべきです...デモからのコード:

$.getJSON("http://api.anywayanyday.com/api/NewRequest/?Route=2406MOWLON&AD=1&CN=0&CS=E&Partner=testapic&_Serialize=JSON&callback=?", function(data) {
var code=data.Id;
$.getJSON("http://api.anywayanyday.com/api/Fares/?R="+code+"&V=Matrix&VB=true&L=ru&_Serialize=JSON&callback=?", function(data) {
    var pricesForEachAirline = [];
    $.each(data.Airlines, function() { 
        var item = { name : this.Name, prices : []};            
        for(var y in this.FaresFull)
        {
            item.prices.push(this.FaresFull[y].TotalAmount);
        }
           pricesForEachAirline.push(item);
    });
    $.each(pricesForEachAirline , function(){
        $('#data').append(this.name, this.prices.join(',')).append('</br>')
    }); 
});

}); </p>

于 2012-09-26T13:56:47.700 に答える