jQuery不是从JSON中提取数据并添加数据-我的代码有什么问题?
jQuery is not pulling data from a JSON and adding the data - What's wrong with my code?
我有一个JSON文件设置的数据,当用户在我的网站从下拉菜单中选择一种音乐类型,该音乐类型的歌曲(歌曲存储在JSON文件中,与艺术家一起)将显示在我的网站上的组合框。遗憾的是,事情没有按计划进行。
我知道这个错误是基于我所犯的一些错误,但我不知道确切的位置!我的浏览器控制台显示:"Uncaught TypeError: Cannot read property 'undefined of undefined"
var selectedValue = dropDown.options[dropDown.selectedIndex].value;
然而,我不知道这是什么意思,或者它是否实际上是一个合法的运行时错误。无论如何,这是我的代码。如果你们这些了不起的人能检查一下我的代码,看看你们认为是什么导致我的代码没有按照我想要的方式运行(详见第一段):)
<标题> JSON h1> JavaScript h1> HTML<!-- Drop Down -->
<select id="music-genre">
<option id="rock" value="rock">Rock</option>
<option id="alternative" value="alternative">Alternative</option>
</select>
<!-- Combo Box -->
<select multiple id="song">
<!-- "Select one or more" is disabled because I don't want users selecting it -->
<option value="select" disabled>Select one or more</option>
</select>
标题>您从返回的JSON中想要的数据在library
数组中,因此您需要使用data.library
。
还请注意,target
将是一个jQuery对象,没有innerHTML
属性,所以你需要使用append
代替:
$.each(data.library, function(key, val) {
target.append('<option value="' + val.title + '">' + val.title + 'by ' + val.artist + '</option>');
})
最后,正如其他人提到的,你可以在select
元素上使用val()
属性来获得所选值:
var selectedValue = $("#music-genre").val();
试着这样使用:
JSON:{
"library": {
"rock": [
{
"title": "Your Love",
"artist": "The Outfield"
},
{
"title": "Voodoo Child",
"artist": "Jimi Hendrix"
},
{
"title": "When I'm Gone",
"artist": "Three Doors Down"
}
],
"alternative": [
{
"title": "Jumper",
"artist": "Third Eye Blind"
},
{
"title": "One Week",
"artist": "Barenaked Ladies"
},
{
"title": "The Middle",
"artist": "Jimmy Eat World"
}
]
}
JAVASCRIPT: $(function(){
// Declare our needed variables
var dropDown = $("#music-genre"); // <select id="music-genre">...</select>
// var selectedValue = dropDown.options[dropDown.selectedIndex].value;
var target = $('#song'); // <select multiple id="song">...</select>
dropDown.on("change", function(){
var genre = $(this).val();
var html = '';
$.getJSON("test.json", function(data){
$.each(data.library[genre], function(key, val){
html += '<option value="' + val.title + '">' + val.title + 'by ' + val.artist + '</option>'; // Save whole html in a var
}); // END $.each*/
target.html(html); // append it in target div
}); // END $.getJSON
});
}); // END ready()
尝试使用:
var selectedValue = dropDown.find(':selected').val();
或:
var selectedValue = dropDown.val();
代替:
var selectedValue = dropDown.options[dropDown.selectedIndex].value;
因为dropDown
是一个jQuery对象,需要你在这里使用jQuery方法。
还要注意,data
包含library
数组,因此您需要访问该数组以获取其中的值:
$.each(data.library, function(key, val) {
target.innerHTML += '<option value="' + val.title + '">' + val.title + 'by ' + val.artist + '</option>';
});
相关文章:
- 如何将JSON数据导入我的ejs模板
- 无法将数据从firebase获取到我的html页面
- 用我的json数据填充JQuery DataTable
- 在php和mysql中选择选项.一旦选择了选项,就列出我的sql数据库数据
- ajax请求成功,但可以'我看不到我的数据
- 如何检查Json文件更新,如果更新了,则用更新的数据刷新我的页面
- 更新数据,而不是用javascript和jquery将其添加到我的表中
- 无法在我的JSON文件中发布数据
- 我尝试使用我的本地js文件来获取远程IP数据,但它不起作用
- 我的地图数据's不会使用php存储在mysql数据库中
- 如何使用XMLHttpRequest()不断地将数据发送到我的网站中的另一个页面
- 我没有'我不知道为什么我的jqGrid子网格没有'不要给我看数据
- 将用户选择的数据临时存储在我的阵列中
- 用我的函数jquery给出数据/参数
- JQuery$.ajax()发布数据以调用我的控制器中的方法
- 我的复选框没有't使用的循环来显示数据
- 在我的案例中,如何获取异步数据
- 如何在 D3 中更新我的多折线图数据
- “玩转这些数据!”我的plot.js图没有显示
- jQuery不是从JSON中提取数据并添加数据-我的代码有什么问题?