2

私が持っているjson配列が私の選択ドロップダウンに入力されない理由を誰かが理解するのを手伝ってくれますか? 配列は正常に (name:value) 印刷され、選択フィールドに入力するためにさまざまな方法 (.post .getJSON) を試しました。以下の私のコードを参照してください...

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);

これは、Webページに印刷されるものです。

[{"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 を実行するまで問題なく動作します。よろしくお願いいたします。

4

3 に答える 3

0

2 つの問題:

  1. アイテムを初期化する必要があります:

    var 項目 = "";

  2. $.each() コールバックの 2 番目のパラメータを から に変更する必要がありvalueますitem

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

これは、コレクションが id および name プロパティを含むオブジェクトのリストであると想定しています。

于 2012-12-27T21:30:06.080 に答える
0
  1. items連結の前に変数を定義する必要があります。
  2. itemあなたのコードでは、ハンドラに引数として渡したプロパティをundefined使用する必要があります。value
  3. あなたのオブジェクトにはプロパティがidありません。name

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

http://jsfiddle.net/5PEPg/

于 2012-12-27T21:30:51.243 に答える
0

を使用する必要がありますvalue。ループ内<option/>で新しいものを作成して追加することもできます。$.each

$(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 は解析に失敗します。

于 2012-12-27T21:31:11.183 に答える