【问题标题】:How to retrieve json data using API and a selected value如何使用 API 和选定的值检索 json 数据
【发布时间】:2015-01-13 08:13:56
【问题描述】:

我不擅长 javascript,在使用 json 提供的 API 从 dataweave.in 访问数据时遇到问题。仅使用 API 检索“make”div(用于汽车制造)的数据时没有问题。 现在基于“make”下拉菜单中显示的选定项目,我想在“model”div 等中检索汽车模型。但我不能。请帮忙,请不要否定,因为我是新来的。这是我的代码:

<div class="make">
        <b>Make</b>
    </div>
    <div class="model">
        <b>Model</b>
    </div>
    <div class="varient">
        <b>Varient</b>
    </div>
    <div class="cities">
        <b>Cities</b>
            <div class="c1"></div>
            <div class="c2"></div>
            <div class="c3"></div>
            <div class="c4"></div>
    </div>

js代码:

$.getJSON("http://api.dataweave.in/v1/car_prices/listUniqMakes?api_key=527686f75e0e2b48e757b2b386d61fdb0667bc7f", function( data ){
                  var items = [];
                  $.each( data["data"], function( key, val ) {
                    items.push( "<option id='" + val["brand"] + "'>" + val["brand"] + "</option>" );

           });

                      $( "<select/>", {
                    "class": "my-new-list",
                    "id" : "select1",
                    html: items.join( "" )
                  }).appendTo( ".make" );

});


     $.getJSON( 'http://api.dataweave.in/v1/car_prices/listUniqMakes?api_key=527686f75e0e2b48e757b2b386d61fdb0667bc7f&make=#brand', function( data ) {
                  var items_model = [];
                  $.each( data["data"], function( key, val ) {
                    items_model.push( "<option id='" + val["model"] + "'>" + val["model"] + "</option>" );
                  });

                  $( "<select/>", {
                    "class": "my-new-list-1",
                    "id" : "select2",
                    html: items.join( "" )
                  }).appendTo( ".model" );
});

请参考此链接: JsFidle

【问题讨论】:

标签: javascript jquery json api jsonp


【解决方案1】:

有几个错误。 1.需要使用正确的api获取数据 2.您在第二次ajax调用中没有指定正确的数据 3.您需要将更改绑定到make选择框,然后通过第二个ajax调用获取模态

$.getJSON( "http://api.dataweave.in/v1/car_prices/listUniqMakes?api_key=596fd23588a0957f6ca0c190cff9b399630b0ec1", function( data ) {
                      var items = [];
                      $.each( data["data"], function( key, val ) {
                          console.log(val['brand']);
                        items.push( "<option id='" + val["brand"] + "'>" + val["brand"] + "</option>" );
                      });

                      $( "<select/>", {
                        "class": "my-new-list",
                        "id" : "select1",
                        html: items.join( "" )
                      }).appendTo( ".make" );

}).done(function(){
    $('#select1').change(function(){
        console.log($(this).val());
        var make = $(this).val();
        $.getJSON( 'http://api.dataweave.in/v1/carPricesIndia/findByMake/?api_key=b20a79e582ee4953ceccf41ac28aa08d&make='+make+'&city=Bangalore&page=1&per_page=10', function( data ) {
                  var items_model = [];
                  $.each( data["data"], function( key, val ) {
                      console.log(val['model']);
                    items_model.push( "<option id='" + val["model"] + "'>" + val["model"] + "</option>" );
                  });

                  $( "<select/>", {
                    "class": "my-new-list-1",
                    "id" : "select2",
                    html: items_model.join( "" )
                  }).appendTo( ".model" );
});


    });
});

JSFIddle

在 OP 请求另一个问题之后

您也可以像fiddle 一样获得变体。 您需要将城市作为第一个选择框。现在我把banglore 设为静态

【讨论】:

  • 先生。拉杰什,你是对的。现在,一旦您在“model”字段中看到相应的数据,您就可以更改“make”字段。现在再次更改“make”字段,您会看到另一个下拉列表...为什么?
  • 因为代码是这样写的。不管发生什么,它都会继续追加
  • 先生。 Rajesh,如果我也想检索 dataweave.in 中给出的“变量”,那么...?
  • 检查这个小提琴。通过这种方式,它不会追加。相反,它将删除以前的并放入新的。 jsfiffle
  • 检查我更新的答案。我也包含了变体。你可以接受答案。快乐编码..
【解决方案2】:

不完全确定 api 调用,但您正在寻找的是:

$.getJSON( "http://api.dataweave.in/v1/car_prices/listUniqMakes?api_key=596fd23588a0957f6ca0c190cff9b399630b0ec1", function( data ) {
                  var items = [];
                  $.each( data["data"], function( key, val ) {
                    items.push( "<option id='" + val["brand"] + "'>" + val["brand"] + "</option>" );
                  });

                  $( "<select/>", {
                    "class": "my-new-list",
                    "id" : "select1",
                    html: items.join( "" )
                  }).appendTo( ".make" ); 
}).done(function() {
$('#select1').change(function(){
    $.getJSON( 'http://api.dataweave.in/v1/car_prices/listUniqMakes?api_key=527686f75e0e2b48e757b2b386d61fdb0667bc7f&make=#brand', function( data ) {
              var items_model = [];
              $.each( data["data"], function( key, val ) {
                items_model.push( "<option id='" + val["model"] + "'>" + val["model"] + "</option>" );
              });

              $( "<select/>", {
                "class": "my-new-list-1",
                "id" : "select2",
                html: items_model.join( "" )
              }).appendTo( ".model" );
});
});
});

.done(function() { $('#select1').change(function(){ YOUR API CALL HERE}); });

将告诉$.getJSON(),在获取内容后绑定一个更改事件,该事件将从 api 调用中获取数据。

见: JSFiddle

【讨论】:

  • 在模型字段中我只能看到“未定义”。可以请检查此处提供的文档:dataweave.in/apis/usage/15/Car-Prices-India
  • 嗨@ArshiyaJahaan,似乎所有对:http://api.dataweave.in/v1/car_prices/listUniqModels/?api_key=527686f75e0e2b48e757b2b386d61fdb0667bc7f&amp;make= 的请求都返回空。看到这个JSFiddle
  • 看来你必须添加城市参数。
猜你喜欢
  • 2020-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多