2012-12-27 18 views
2

有人可以幫我找出爲什麼我有json數組不是人口我的選擇下拉?該數組打印罰款(名稱:價值),我已經嘗試了不同的方式(.post .getJSON)填補選擇領域。見我的代碼如下...人口選擇選項使用json_encode

PHP

$q = "select Site_ID, FirstName, LastName from ClientInfo"; 
$sql = mysql_query($q); 
$data = array(); 
    while($row = mysql_fetch_array($sql, true)){ 
    $data[] = $row; 
}; 
echo json_encode($data); 

這是它在打印網頁:

[{"Site_ID":"10000001","FirstName":"drew","LastName":"0"},  {"Site_ID":"10000002","FirstName":"hello","LastName":"0"},{"Site_ID":"10000003","FirstName":"hihi","LastName":"0"},{"Site_ID":"10000004","FirstName":"","LastName":"0"},{"Site_ID":"10000005","FirstName":"SueAnn","LastName":"Hall"},{"Site_ID":"10000006","FirstName":"Test","LastName":"Name"}] 

HTML腳本與我之前運行

<body> 
<script type="text/javascript"> 
$(function(){ 
    $.getJSON('checkin.php',function(data){ 
    $.each(data,function(name,value) 
    { 
     items+="<option value='"+item.id+"'>"+item.name+"</option>"; 
    }); 
    $("#clients").html(items); 
    }); 
}); 
</script> 

<select id="clients"> 
<option>Default</option> 
</select> 
</body> 

做工精細HTML。預先感謝您的幫助。

回答

0
  1. 您應該在連接之前定義items變量。
  2. item在您的代碼中是undefined,您應該使用value作爲參數傳遞給處理程序的屬性。
  3. 您的物品沒有idname屬性。

    var items = ''; 
    $.each(data,function(name,value) { 
        items += "<option value='"+value.Site_ID+"'>"+value.FirstName+"</option>"; 
    }); 
    $("#clients").html(items); 
    

http://jsfiddle.net/5PEPg/

+0

謝謝!!!就是這樣。 – user1933115

0

兩個問題:

  1. 需要初始化的項目:

    VAR項目= 「」;

  2. 您需要更改第二個參數在$。每次從valueitem()回調:

    $.each(data, function (name, item) { 
        items += "<option value='" + item.id + "'>" + item.name + "</option>"; 
    }); 
    

這是假設您的收藏是一種含有一個ID和名稱的對象列表屬性。

0

您需要使用value。您還可以創建並在$.each循環追加每個新<option/>

$(function(){ 
    $.getJSON('checkin.php',function(data){ 
    var lst = $("#clients").empty(); 
    $.each(data,function(index,value){ 
     $("<option/>").prop("value", value.Site_ID).text(value.FirstName + " " + value.LastName).appendTo(lst); 
    }); 
    }); 
});​ 

這樣做,這樣也可以防止解析問題與您的通話.html()與連接字符串。例如,如果某人的名字或姓氏中有雙引號,則html將無法解析。