TypeError:$(...)。val(...)。html不是函数

时间:2017-05-25 12:09:44

标签: javascript jquery json ajax

我从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>

3 个答案:

答案 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);
}

相关问题