2012-12-05 37 views
-1

我想動態地添加選項到使用PHP,jQuery和AJAX框。動態添加選項以選擇與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)); 
} 

我需要換貨政... RN該字符串($ catlist)一個<select id="mylist"></select>內相應使最終輸出是這樣的:

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

在Firebug中我看到正確的頁面顯示的響應,但一無所獲。

我該怎麼做?如果您覺得我的問題不完整,請要求澄清。

+1

顯示您的js將數據追加部分 –

+1

如果您從AJAX調用中返回一個字符串,只需'append()'或設置'html()'。 –

+0

你可以顯示你已經嘗試過的代碼嗎?什麼「不起作用」?我沒有看到你在解決這個問題上的任何嘗試,或者至少通過發佈失敗的代碼來說明問題所在。 –

回答

2

使用.append在元素內插入內容。見下文,

$('#mylist').append($options); 
+0

這是否給出的答覆只是迴應在ajax調用或返回與json_encode? – bikey77

+0

如果您只是在服務器端頁面中輸出字符串,這將起作用。但是,$ options的變量可能在您的JavaScript代碼中不可用。這個答案是將php和js語言合併在一起的。 –

+0

除非$ options是你的js變量。 –

2

如果您有jQuery的lib中運行做這樣的事情:

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

或者你可以,如果你想添加額外的選項

1
$.ajax({ 
    url: 'ajax/test.html', 
    success: function(data) { 
    //Relevant code 
    $('#mylist').html(data); 
    } 
});