0

PHP、jQuery、および AJAX を使用して、ボックスにオプションを動的に追加しようとしています。

まず、最初のコントロール (タグリスト) が変更されたときの AJAX への呼び出し:

$('#taglist').change(function(){
    $.post('../includes/ajax.php', {   
      taglist:$(this).find("option:selected").attr('value')}, function(data) {
      $("#catlist").html(data.catlist);
    });
});

私が作成した PHP 関数 fillselecteditmultiple() は、次の形式の文字列を設定します。

$options = '<option value="1">Option 1</option><option value="2">Option 2</option><option value="3">Option 3</option>';

次のように json_encode を使用してページに返します。

if(isset($_POST['taglist'])){
    $catresult = mysql_query("select catid from category_tags where id='".$_POST['taglist']."'");
    $rowcat = mysql_fetch_array($catresult);

    $catlist = '<select name="cat_id[]" size="5" multiple id="cat_id[]">';
    $catlist .= fillselecteditmultiple(1, 0, $rowcat['catid']);
    $catlist .= '</select>';
    echo json_encode(array("status"=>"success", "catlist" => $catlist));
}

<select id="mylist"></select>最終的な出力が次のようになるように、それに応じてその文字列 ($catlist) を返す必要があります。

<select id="mylist">
  <option value="1">Option 1</option>
  <option value="2">Option 2</option>
  <option value="3">Option 3</option>
</select>

Firebug では、応答は正しく表示されますが、ページには何も表示されません。

どうすればいいですか?私の質問が不完全だと思われる場合は、説明を求めてください。

4

3 に答える 3

2

jquery lib を実行している場合は、次のようにします。

$.ajax({
  url: 'your_script_url.php',
  success: function(data) {
    $('#mylist').html(data);
  }
});

別のオプションを追加したい場合は、データを追加することもできます

于 2012-12-05T15:25:31.123 に答える
1

.append要素内にコンテンツを挿入するために使用します。下記参照、

$('#mylist').append($options);
于 2012-12-05T15:23:16.587 に答える
1
$.ajax({
  url: 'ajax/test.html',
  success: function(data) {
   //Relevant code
    $('#mylist').html(data);
  }
});
于 2012-12-05T15:25:46.007 に答える