【问题标题】:cant get json data, the under categories ones无法获取 json 数据,以下类别
【发布时间】:2012-09-26 23:51:22
【问题描述】:

lemme 描述一下情况,有一个 json 数据提供不同航空公司的航班信息,有价格、日期等所有内容,但我无法以我想要的方式获得所需的信息。因此它来了:

我有另一个关于 json 数据回调的新手问题,到目前为止,我可以在 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');
        });
    });

【问题讨论】:

    标签: jquery json getjson


    【解决方案1】:

    我无法完全理解您要做什么...但是您的脚本中有一些错误。主要的是:$.each(data, function(key, val) {。从此 jsonp 请求传递的数据不是数组。是对象。此对象具有属性:Airlines。所以,如果你想迭代 throw all 航空公司,你应该使用 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>')
        }); 
    });
    

    });​

    【讨论】:

    • 感谢您的回答,但我的代码工作正常(而 urs 没有)但不是我想要的工作方式,请注意 json 文件的结构。顺便说一句,我想从这个 json api.anywayanyday.com/api/Fares/… 获得总金额?
    • 那么,您想获取每条航线的总金额吗?例如:'Air baltic' = 3882 。我说的对吗?
    • 是的!确切地说,我想获取每个航空公司的每个总金额,据我从 json 数据了解,有几个总金额,我更新了我的代码,但仍然无法获得总金额,只是航空公司列表来了
    • 请再帮我一次!我在这里有类似的问题:stackoverflow.com/questions/12616103/…
    猜你喜欢
    • 2013-06-13
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多