猿问

AJAX .done() 在 JSON 响应中返回未定义的 $.each()

我无法从 $.ajax() 请求访问 JSON 结果。选择汽车型号后,我会从 api 获得结果,但我无法访问 JSON 响应以获取传播新下拉列表所需的信息。


HTML


<div class="row">

    <div class="form-group col">   

        <label>Make</label>

        <select class="custom-select" id="vMake">

        <option selected="" disabled="">Choose Make</option>

        <?php

            require "config.php"; 

            $sql = "SELECT * FROM tbl_cars";

            $stmt = $pdo->prepare($sql);

            $stmt->execute();

            $cars = $stmt->fetchAll(PDO::FETCH_ASSOC);

            foreach ($cars as $cars) {

                echo "<option id='".$cars['make']."' value='".$cars['make']."'>".$cars['make']."</option>";

            }

        ?>

        </select>   

    </div>

    <div class="form-group">

        <label>Model</label>

        <select class="custom-select col" id="vModel">

            

        </select>

    </div>

</div>

JS


$(document).ready(function(){

    $('#vMake').on('change', function(){

        var make = $(this).val();

        var url = "https://vpic.nhtsa.dot.gov/api/vehicles/GetModelsForMake/" + make + "?format=json";

        $.ajax({

            url: url,

            type: "GET",

            dataType: "json",                    

        }).done(function(data){

           

           

           $('#vModel').empty();

           

           $.each(data, function(i, e){

               

               

                var model = data[i].Model_Name;

                $('#vModel').append('<option value="' + model +'">'+ model + '</option>'); 

            });

                

           

        });

    });

})


我正在尝试获取结果的模型名称。但如下图所示,我在第二个下拉列表中未定义。我怎样才能得到我需要的信息?

UYOU
浏览 104回答 1
1回答

缥缈止盈

首先,删除这个:var&nbsp;data;您已经data在该函数中调用了一个变量,因此如果该行正在执行任何操作,它将覆盖该变量并生成整个undefined.&nbsp;(如果它不这样做,它仍然完全是多余的,只会让你感到困惑。)除此之外,从您的 JSON 看来,您想要循环的不是data,而是data.Results:$.each(data.Results,&nbsp;function(i,&nbsp;e){ &nbsp;&nbsp;//... &nbsp;&nbsp;});
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答