我正在尝试使用jquery使用以下JSON数据填充下拉框
{
"Name":["A","B","C"],
"Movie":["X","Y","Z"]
}
这是我到目前为止所做的脚本
$("#firstbox").change(function(){
var $selection=$(this);
$.getJSON("data.json",function(data){
var i=$selection.val();
var arr=[];
switch(i){
case 'Name':
arr=data.Name.split(",");
break;
case 'Movie':
arr=data.Movie.split(",");
break;
}
});
});
我的基本index.html就像这样
<select id="firstbox">
<option selected value="">---Select---</option>
<option value="Name">Name</option>
<option value="Movie">Movie</option>
</select>
<select id="secondbox" name="">
<option selected value="">---Generate---</option>
<script src="myjs.js"> </script>
</select>
'secondbox'下拉列表应生成与'firstbox'下拉列表相对应的值。我收到的错误是'未定义的拆分功能'。谁能给我一个提示?
由于
答案 0 :(得分:1)
split
是String
对象的一种方法,您可以在Array
对象上使用它。
您不需要拆分,因为Name和Movie键是JSON对象中的allready数组。
$("#firstbox").on("change", function(e){
var sel=$(this).val();
$("#secondbox").empty();
$.getJSON("data.json",function(data){
var values=data[sel] || ['Error : key not found'];
$(values).each(function(index,element) {
$("<option />", {value: element, text:element}).appendTo("#secondbox");
});
});
});
以下是一个有效的例子:http://jsfiddle.net/cKBeE/
答案 1 :(得分:1)
$("#firstbox").on("change", function(e){
writeOptions();
}
function getJSONData(firstboxval) {
//make ajax call to get data for second dropdown
//that corresponds to the value selected in firstbox
//then make function return the array of options
}
function writeOptions() {
var firstboxval = $("#firstbox").val();
var optionValues = getJSONData(firstboxval);
var dropDown = document.getElementById("secondbox");
for(var i=0; i<optionValues.length; i++) {
var key = i;
var value = optionValues[i];
dropDown.options[i] = new Option(value, key);
}
}