【问题标题】:Objects in JSON file is not populating the dropdown menuJSON 文件中的对象未填充下拉菜单
【发布时间】:2016-12-14 03:29:58
【问题描述】:

功能

将下拉菜单中的对象填充到下拉菜单中。 Json 文件存储在 root/ajax/.json 中,而工作文件存储在 root/.html 中。

问题:

JSOn 文件中没有任何对象填充下拉菜单。我试图 console.log(data) 但它没有返回任何东西。我不知道调用 JSON 文件以填充下拉菜单失败的原因。

我尝试了 2 种方法来调用 JSON 文件:

#dropDownShops_1 {
  position: absolute;
  width: 330px;
  height: 59px;
  z-index: 90;
  top: 340px;
  left: 350px;
  outline: 0;
  border: 0;
}
#dropDownShops_2 {
  position: absolute;
  width: 330px;
  height: 59px;
  z-index: 90;
  top: 535px;
  left: 350px;
  outline: 0;
  border: 0;
}
select {
  margin: 50px;
  border: 1px solid #111;
  background: transparent;
  width: 150px;
  padding: 5px 35px 5px 5px;
  font-size: 16px;
  border: 1px solid yellow;
  height: 34px;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background: url("../lib/image/Dropdown_arrow.png") 100% / 100% no-repeat #eee;
}
<form>

  <!-- DropDown Menu to choose Participating Outlet -->
  <select id="dropDownShops_1">
    <option value="None" selected="Selected">Please Select Shops ...</option>
  </select>


  <select id="dropDownShops_2">
    <option value="None" selected="Selected">Please Select Shops ...</option>
  </select>

</form>

JSON 文件:

有 400 个项目,但为简单起见,我将其缩小到只有 3 个项目:

{
"Shops": [
{
    "ShopName": "7-ven",
    "ShopID": "7-ven123",
    "Shoplocation": "#02-31"
}, {
    "ShopName": "8Tarstries",
    "ShopID": "8Tarstries123",
    "Shoplocation": "#B2-K4"
}, {
    "ShopName": "A|hange",
    "ShopID": "A|hange123",
    "Shoplocation": "#01-202"
}]   
}

方法 1:

我尝试使用此方法,但下拉菜单中没有显示任何内容,console.log 中也没有显示任何内容

//get a reference to the select element
var $select = $("#dropDownShops_1, #dropDownShops_2");

/*******************************************************
 *FUNCTION CALL TO POPULATE DROPDOWN MENU FROM JSON FILE*
 *******************************************************/
$(function() {
  //request the JSON data and parse into the select element
  $.getJSON('ajax/shops.json', function(data) {

    $select.html('');

    $.each(data.Shops, function(key, value) {

      console.log("value:" + value);
      //iterate over the data and append a select option
      $select.append("<option >" + value.ShopName + "</option>");
    });
  });

});

方法 2:

我尝试使用此方法,但它显示“无可用”,因为它会直接调用错误:函数():

//get a reference to the select element
    var $select = $("#dropDownShops_1, #dropDownShops_2");
/*******************************************************
        *FUNCTION CALL TO POPULATE DROPDOWN MENU FROM JSON FILE*
        *******************************************************/
        $.ajax({
            url: "ajax/shops.json",
            dataType: 'json',
            success: function(data) {
                console.log(data);

                $select.html('');
                $.each(data.Shops, function(key, value) {

                    console.log("value:" + value);
                   //iterate over the data and append a select option
                   $select.append("<option >" + value.ShopName + "</option>");
                });
            },
            error:function(){
                //if there is an error append a 'none available' option
                $select.html('<option id="-1">none available</option>');
            }
        });

【问题讨论】:

  • 你在$( document ).ready()里面使用jquery吗
  • @bansi 我认为这并不重要
  • error 回调被调用时,实际的错误是什么?
  • @nnnnnn 错误回调时,下拉菜单中显示“none available”,而不是“Please Select Shops ...”
  • 是的,因为这就是您的错误“处理”代码所做的。但实际的错误是什么? jQuery 将错误的详细信息传递给您的函数,但您没有对这些信息做任何事情。浏览器的开发工具网络选项卡中是否有任何错误?

标签: javascript jquery html json


【解决方案1】:

var data={
"Shops": [
{
    "ShopName": "7-ven",
    "ShopID": "7-ven123",
    "Shoplocation": "#02-31"
}, {
    "ShopName": "8Tarstries",
    "ShopID": "8Tarstries123",
    "Shoplocation": "#B2-K4"
}, {
    "ShopName": "A|hange",
    "ShopID": "A|hange123",
    "Shoplocation": "#01-202"
}]   
}
 
$.each( data.Shops, function( key, value ) {
var $select = $("#dropDownShops_1, #dropDownShops_2");
 $select.append("<option >" + value.ShopName + "</option>");

}); 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="dropDownShops_1">
    <option value="None" selected="Selected">Please Select Shops ...</option>
  </select>


  <select id="dropDownShops_2">
    <option value="None" selected="Selected">Please Select Shops ...</option>
  </select>

【讨论】:

  • 检查附件plnkr.co 我从外部文件中获取数据检查您是否遗漏了什么
猜你喜欢
  • 2018-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-19
  • 1970-01-01
  • 1970-01-01
  • 2014-05-26
  • 1970-01-01
相关资源
最近更新 更多