2013-04-30 42 views
3
$(document).ready(function(){ 
$("#prjname").autocomplete("ajaxcomplete.php", { 
     selectFirst: true, 
       matchContains:true 
    }).result(function(event, item) { 
       var id=item; 

        $.ajax({ 
          url: "db_data.php", 
          async: false, 
          data:"id="+id, 
          success: function(data) 
          { 

          } 
        }) 
       }); 
}); 

IUN Ajax响应我能得到这样的Ajax响应JSON数据不是在下拉菜单中设置

[{"id":"1","name":"Analysis"},{"id":"2","name":"Coding"},{"id":"3","name":"Documentation"},{"id":"23","name":"ppt"}] 

的数据现在如何在下拉列表填充数据?我试过的代码如下:

var arr = $.parseJSON(data); 
       $('.act').empty(); 
       $('#actname').append($('<option/>').attr("value","").text("Select Activity")); 
        arr.filter(function (option) 
         { 
          $('#actname').append($('<option/>').attr("value", option.id).text(option.name)); 
         }) 

但它不会填充数据。

+0

为什么要将JSON格式的数据解析为JSON格式? – 2013-04-30 12:29:55

+0

如果我没有解析JSON DAT仍然同样的问题是,我有使用简单javscript功能的代码,然后它工作正常 – jugni 2013-04-30 12:31:42

+0

这将帮助你 http://stackoverflow.com/questions/2637694 /如何对填入-A-下拉列表,以JSON的数据功能于jQuery的 – 2013-04-30 12:36:06

回答

0
<script> 
$(document).ready(function(){ 
$("#prjname").autocomplete("ajaxcomplete.php", { 
     selectFirst: true, 
       matchContains:true 
    }).result(function(event, item) { 
       var id=item; 
        $.ajax({ 
          type: "POST", 
          dataType: "json", 
          url: "db_data.php", 
          data: "id="+id, 
           success: function(data) 
           { 
            alert(data); 
            $('.act').empty(); 
            $('#actname').append($('<option/>').attr("value","").text("Select Activity")); 
            for (var i = 0, len = data.length; i < len; ++i) 
            { 
             var prj = data[i]; 
             $('#actname').append($('<option/>').attr("value", prj.id).text(prj.name)); 
             $('.project_id').val(prj.project_id); 

            } 
           } 
          }) 

       }); 
}); 
</script> 

这是我的解决方案。

0

试试这个

$.ajax({ 
      url: "db_data.php", 
      async: false, 
      data:"id="+id, 
      dataType:'json', //<---just to make sure the response is in JSOn so that you don't have to parse it again 
      success: function(data) 
      { 
       $('.act').empty(); 
       $('#actname').append($('<option/>').attr("value","").text("Select Activity")); 
       $.each(data,function(i,v) 
       { 
        $('#actname').append($('<option/>').attr("value", v.id).text(v.name)); 
       }) 
      } 
     }) 
+0

我都尝试过,但没有工作 – jugni 2013-04-30 12:50:19

+0

你得到任何错误..请检查您的控制台 – bipen 2013-04-30 12:55:18

+0

我hvae检查,但没有得到任何错误 – jugni 2013-04-30 12:56:18

0

我不知道这是“正确”的做法或没有,但一般为了这个,我打造的下拉列表作为后端的PHP脚本的字符串,然后将该字符串返回给ajax调用。然后你可以做一个简单的“select_field_id.innerHTML = returned_string”来填充下拉列表。

像这样: 在PHP:

$selecthtml .= "<option value='" . $val . "'>" . $text . "</option>"; 
echo $selecthtml; 

然后在JavaScript:

document.getElementById("selectid").innerHTML = data; 

同样,不知道这是 “正确” 与否,但它为我工作。

1
$.ajax({ 
          url: "db_data.php", 
          async: false, 
          data:"id="+id, 
          success: function(data) 
          { 
           var arr = $.parseJSON(data); 
           $('.act').empty(); 
           $('#actname').append('<option value="" > Select Activity</option>'); 
           $.each(arr, function(i, item) { 
            $('#actname').append('<option value="'+item.id+'" >'+item.name+'</option>'); 

           }); 

          } 
     }) 
0
on success loop through options 
success: function(data) 
    { 
     var arr = $.parseJSON(data); 
     $('.act').empty(); 
     $('#actname').append('<option value="" > Select Activity</option>'); 
     $.each(arr, function(i, item) { 
      $('#actname').append(new Option(item.name,item.id)); 

     }); 

} 
+0

我已经尝试过,但仍然不起作用 – jugni 2013-04-30 12:50:04

+0

是否有任何js错误 – 2013-04-30 12:54:27

+0

我检查错误日志但没有发现任何错误 – jugni 2013-04-30 12:56:40