我从Ajax响应中获取json数组,我试图在下拉列表中添加它,但我收到错误以上错误。 stringyfy之后的JSON数组包含下面的数组。
[{" ID":" 1"" NAME":" Nevpro"},{" ID&#34 ;:" 9"" NAME":"图莎尔"}]
<html>
<select name id='sel'>
</select>
</html>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<script type="text/javascript">
$(
function() {
$('.filter-dropdown').change(function() {
var lan = this.value;
//alert(lan);
//alert(lan)
$.ajax({
url: "http://10.10.1.84/services/request.php",
dataType: "json",
type: "POST",
data: {lan : lan},
success: function(data){
var data1=JSON.stringify(data);
alert(data1);
$.each(data1,function (key,value) {
alert(key);
$("#sel").append($('<option></option>').val(value.ID).html(value.NAME));
});
}
});
});
});
</script>
答案 0 :(得分:1)
您可以定义value and text as an object.
$("#sel").append(
$('<option></option>',{
value : value.ID,
text : value.NAME
})
);
更新:虽然还有一个错误,但您正在迭代字符串化数据,因此请将其替换为对象(这是代码中的实际问题)。
$.each(data,.....
//-----^^^^------
答案 1 :(得分:0)
$.each(data1,function (key,value) {
alert(key);
$('#sel').append('<option value='+value.ID+'>'+value.NAME+'</option>');
});
您无需再添加$ inside追加。您可以在循环中添加这样的选项。
答案 2 :(得分:0)
我认为这应该解决你的问题
var optionTemp = document.createElement('option')
for (i in data1) {
var option = optionTemp.cloneNode();
option.value = data1[i][ID];
option.text = data1[i][NAME];
$('#sel').append(option);
}