2013-04-30 111 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